1. 程式人生 > >JDBC——事物

JDBC——事物

文章目錄

1 概述

JDBC驅動程式預設使用的自動提交模式,每個SQL語句在完成後都會提交到資料庫中。
要啟動手動事務支援,需要呼叫Connection物件的setAutoCommit()方法。

2 簡單應用

  • 1 開啟事物
  • 2 當執行結束,提交事物
  • 3 當捕獲異常時,回滾事物
try{
   // 1.開啟事物
   conn.setAutoCommit(false);
   Statement stmt = conn.createStatement
(); String SQL1 = "INSERT INTO user " + "VALUES (2,"xiaozhang")"; // 2.執行SQL stmt.executeUpdate(SQL1); String SQL2 = "INSERTED IN user " + "VALUES (3,"xiaowang")"; stmt.executeUpdate(SQL2); // 3.提交事物 conn.commit(); }catch(SQLException se){ // 4. 當有異常產生時,回滾事物
conn.rollback(); }

3 SavePoint

  • 設定儲存點(Savepoint)時,可以在事務中定義邏輯回滾點。如果通過儲存點(Savepoint)發生錯誤時,則可以使用回滾方法來撤銷所有更改或者僅儲存儲存點之後所做的更改。
  • Connection物件有兩種新的方法可用來管理儲存點:
  • saveSavepoint(String savepointName):定義新的儲存點,它還返回了一個Savepoint物件。
  • releaseSavepoint(Savepoint savepointName):刪除儲存點。要注意,它需要一個Savepoint物件作為引數。該物件通常是由setSavepoint()方法生成的儲存點。
try{
   1.開啟事物
   conn.setAutoCommit(false);
   Statement stmt = conn.createStatement();
   //2.設定儲存點
   Savepoint savepoint1 = conn.setSavepoint("Savepoint1");
   String SQL1 = "INSERT INTO user  " +
                "VALUES (2,"xiaozhang")";
   // 3.執行語句             
   stmt.executeUpdate(SQL1);  
   String SQL2 = "INSERTED IN user " +
                "VALUES (3,"xiaowang")";
   stmt.executeUpdate(SQL2);
   // 4 提交事物
   conn.commit();
}catch(SQLException se){
   // 回滾
   conn.rollback(savepoint1);
}