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

相關文章
相關標籤/搜索