JDBC-事务处理控制

来源:互联网 发布:假面骑士钢斗数据 编辑:程序博客网 时间:2024/06/07 14:25

 在JDBC的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。我们通过提交commit()或是回退rollback()来结束事务的操作。针对事务的控制有自动控制和手动控制两种。

事务的自动控制

 在JDBC中,事务操作默认是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作。操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回退。 不用特意在代码中写commit(),rollback()操作。

事务的手动控制

在JDBC中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交。倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常。此时就可以在异常捕获时调用 rollback()进行回退。这样做可以保持多次更新操作后,相关数据的一致性。

 try{
// 禁止自动提交,设置成手动提交
 conn.setAutoCommit(false);  
  stmt = conn.createStatement(); 
 添加操作1 
  stmt.executeUpdate(“insert into myTable(ID,Name) values('liwg','weiguo') ”); 
 更新操作2
  stmt.executeUpdate(“update myTable Set Name='liwg' Where ID = 'liyy'”); 
 //事务提交,-真正写入数据库操作 
  conn.commit();  
   }
 catch(Exception e) {
   e.printStackTrace();  
   if ( conn != null ) {
        // 手动 回滚
      conn.rollback();
    }
 }

上面这段程序的执行,或者两个操作都成功,或者两个都不成功。这就是手动事务的范围控制的能力,这个范围里也可以包含批量操作。

需要注意的是:连接的手动提交,在抛异常的时候需要用手动回滚来完成回滚操作。

 

原创粉丝点击