您的位置:首页 > 数据库

JDBC之Transaction(事务),SetAutoCommit保证事务原子性

2017-09-24 22:45 591 查看
默认的话为自动提交, 每执行一个update ,delete或者insert的时候都会自动提交到数据库,无法回滚事务。

设置connection.setAutoCommit(false);只有程序调用connection.commit()的时候才会将先前执行的各语句一起提交到数据库;或者先前执行的各语句只执行了一部分,然后就失败了,这时可以程序调用connection.rollBack()。这样就实现了数据库的事务。

connection.setAutoCommit(true)和connection.setAutoCommit(false)的区别:

true:sql命令的提交(commit)由驱动程序负责

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

Connection con = null;

try{

con = getConnection();

con.setAutoCommit(false);

/*

* do what you want here.

*/

con.commit();

}catch(SQLException e){

if(con!=null){

try {

con.rollback();

con.setAutoCommit(true);

} catch (SQLException e1) {

e1.printStackTrace();

}

}

}finally{

if(con!=null){

try {

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}


参考链接

mysql事务autocommit

Connection.setAutoCommit使用的注意事项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 jdbc 事务