事务回滚setAutoCommit(false)

来源:互联网 发布:慈溪每日成交数据 编辑:程序博客网 时间:2024/06/04 18:13

try{

conn=new DBConnect().getConnect();

conn.setAutoCommit(false);

conn.commit();

}catch( expection e){

conn.rollback();

conn.close();


}

conn.setAutoCommit(false)


void setAutoCommit(boolean autoCommit)throws SQLException

将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有 SQL 语句,并将这些语句作为单独的事务提交。否则,其 SQL
语句将成组地进入通过调用 commit 方法或 rollback
方法终止的事务中。默认情况下,新的连接处于自动提交模式下。
提交发生在语句完成或执行下一条语句时,以先发生的情况为准。在语句返回 ResultSet 对象的情况下,该语句在已检索完最后一行 ResultSet 对象或已关闭 ResultSet 对象时完成。在更复杂的情况下,单个语句可以返回多个结果和输出参数值。在这些情况下,提交发生在检索到所有结果和输出参数值后。

注:如果在事务处理期间调用此方法,则提交该事务。
参数: autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用该模式

使用举例:

Connection sqlManager = SQLManager.getConnection();
sqlManager.setAutoCommit(
true);
Statement stmt
 = sqlManager.createStatement();

一般来说不用setAutoCommit(true);
因为大部分的驱动默认是true;
当你涉及事务处理的时候可以将setAutoCommit(false);
然后在你事务完后commit一下就行了

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

2、getAutoCommit()
boolean getAutoCommit()throws SQLException

检索此 Connection 对象的当前自动提交模式。
返回:此 Connection 对象的自动提交模式的当前状态

3、commit()
void commit()throws SQLException

使自从上一次提交/回滚以来进行的所有更改成为持久更改,并释放此 Connection 对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。
抛出:
SQLException - 如果发生数据库访问错误或者此 Connection 对象处于自动提交模式下


1 0
原创粉丝点击