1. 程式人生 > >JDBC對事務的使用(包括自動提交,回滾等知識)

JDBC對事務的使用(包括自動提交,回滾等知識)

首先得清楚什麼時候使用事務。 
   當你需要一次執行多條SQL語句時,可以使用事務。通俗一點說,就是,如果這幾條SQL語句全部執行成功,則才對資料庫進行一次更新,如果有一條SQL語句執行失敗,則這幾條SQL語句全部不進行執行,這個時候需要用到事務。 
   其次才是事務的具體使用。 
1.獲取對資料庫的連線(程式碼這裡省略了吧,網上太多了,對各種資料庫的連線的都有) 
2.設定事務不自動提交(預設情況是自動提交的) 
conn.setAutoCommit(false);  //其中conn是第一步獲取的隨資料庫的連線物件。

3.把想要一次性提交的幾個sql語句用事務進行提交 

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

4.捕獲異常,進行資料的回滾(回滾一般寫在catch塊中) 

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

5.把事務再改成自動提交(預設狀態) 

conn.setAutoCommit(true);
解答各種疑問 
1.回滾的目的是什麼呢? 
目的是使得sql1,sql2。。。等操作要麼全部執行成功,要麼全部執行不成功,這也是為什     麼把這幾個sql語句當成一個事務來處理的目的。 
2.回滾從哪裡開始回滾,我如何控制回滾的起始點。 

其實是可以設定儲存點的 

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

如果你沒有設定儲存點,他會回滾到你設定禁止事務自動提交的時候,因為你是先設定禁止自動提交的,再進行executeUpdate(sql)的,所以他會回滾到你的所有執行的這幾個sql語句前的狀態。