conn.setAutoCommit(false);设置事物手动提交

参数: autoCommit -- true表示启用自动提交模式;为 false表示禁用该模式

默认的话为自动提交,每当执行一个update ,delete或者insert的时候都会自动提交到数据库,无法回滚事务。

使用举例:

                     ConnectionsqlManager = SQLManager.getConnection();

                     //一般来说不用setAutoCommit(true),因为大部分的驱动默认是true;
                     sqlManager.setAutoCommit(true);
                     Statement stmt = sqlManager.createStatement();

                     ***********

                     ***********

 

当涉及事务处理时将setAutoCommit(false);
然后事务完后commit一下

如果设置sqlManager.setAutoCommit(false);的话,则在语句正常执行完毕后需要用sqlManager.commit()手动提交,如果在执行语句时出错的可以调用sqlManager.rollback()来回滚!

                    

                     ConnectionsqlManager = SQLManager.getConnection();

                     //设置事物为手动提交;
                     sqlManager.setAutoCommit(false);

                     Statementstmt = sqlManager.createStatement();

                     *************

                     ************
                     //
提交事物;
                     sqlManager.commit();

 


完整例子(添加角色,因为角色和账号之间存在中间表,所以需要设置)

public void addRole(Role role, String[] menuIds) {
Connection conn = null;
try {

// 获取数据库连接对象
conn = C3P0Util.getConnection();
// 设置事物手动提交
conn.setAutoCommit(false);
// 添加角色基本信息, 添加完成之后将新增角色ID设置到 role 对象当中,用于添加中间表时使用
roleDAO.add(role, conn);
// 添加角色菜单关联关系
roleDAO.addRoleToMenu(role.getId(), menuIds, conn);

 // 提交事物;
conn.commit();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
C3P0Util.close(conn, null, null);
}
}

truesql命令的提交(commit)由驱动程序负责

falsesql命令的提交由应用程序负责,程序必须调用commit或者rollback方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值