JDBC对事务的使用(包括自动提交,回滚等知识)

   首先得清楚何时使用事务。 
   当你须要一次执行多条SQL语句时,能够使用事务。通俗一点说,就是,若是这几条SQL语句所有执行成功,则才对数据库进行一次更新,若是有一条SQL语句执行失败,则这几条SQL语句所有不进行执行,这个时候须要用到事务。 
   其次才是事务的具体使用。 
1.获取对数据库的链接(代码这里省略了吧,网上太多了,对各类数据库的链接的都有) 
2.设置事务不自动提交(默认状况是自动提交的)   
conn.setAutoCommit(false);  //其中conn是第一步获取的随数据库的链接对象。

 3.把想要一次性提交的几个sql语句用事务进行提交  java

Statement stmt = null; 
     stmt = conn.createStatement(); 
     stmt.executeUpdate(sql1); 
     stmt.executeUpdate(Sql2); 
     conn.commit();   //使用commit提交事务

4.捕获异常,进行数据的回滚(回滚通常写在catch块中)  sql

catch(Exception e) 
    { 
        ... 
        try 
        { 
           conn.rollback(); 
        } catch(Exception e) 
        {...} 
     }

5.把事务再改为自动提交(默认状态)  数据库

conn.setAutoCommit(true);
解答各类疑问 
1.回滚的目的是什么呢? 
目的是使得sql1,sql2。。。等操做要么所有执行成功,要么所有执行不成功,这也是为什     么把这几个sql语句当成一个事务来处理的目的。 
2.回滚从哪里开始回滚,我如何控制回滚的起始点。 

实际上是能够设置存储点的  spa

Savepoint piont = conn.setSavepoint(); 
   conn.rollback(point);

若是你没有设置存储点,他会回滚到你设置禁止事务自动提交的时候,由于你是先设置禁止自动提交的,再进行executeUpdate(sql)的,因此他会回滚到你的全部执行的这几个sql语句前的状态。 code

相关文章
相关标签/搜索