JDBC事務處理

2021-07-10 11:25:00 字數 1564 閱讀 8976

當jdbc程式向資料庫獲得乙個connection物件時,預設情況下這個connection物件會自動向資料庫提交在它上面傳送的sql語句。若想關閉這種預設提交方式,讓多條sql在乙個事務中執行,並且保證這些語句是在同一時間共同執行的時,我們就應該為這多條語句定義乙個事務。

其中,銀行轉賬這一事例,最能說明,使用事務的重要性了。

update from account set money=money-200 where name=『a』;

update from account set money=money+200 where name=『b』;

因為這時,兩個賬戶的增減變化是在一起執行的。

> 1;  setautocommit(boolean autocommit) :設定是否自動提交事務

> 2; commit():提交事務

> 3; rollback():撤銷事務

首先,.設定事務的提交方式為非自動提交:

conn.setautocommit(false);

接下來,.將需要新增事務的**放入try,catch塊中。

然後,.在try塊內新增事務的提交操作,表示操作無異常,提交事務。

conn.commit();

尤其不要忘記,.在catch塊內新增回滾事務,表示操作出現異常,撤銷事務:

conn.rollback();

例子:

conn = jdbcutils.getconnection();

// 控制事務,關閉事務的自動提交

conn.setautocommit(false);

// 賬號轉出200

string sql = "update account set money = money-? where "+ "name=? and money>=200"

; pstmt1 = conn.preparestatement(sql);

// 設定引數

pstmt1.setdouble(1, amount);

pstmt1.setstring(2, outaccount);

pstmt1.executeupdate();

// 賬號轉入200

string sql2 = "update account set money=money+? where name=?"

; pstmt2 = conn.preparestatement(sql2);

pstmt2.setdouble(1, amount);

pstmt2.setstring(2, inaccount);

pstmt2.executeupdate();

// 提交事務

conn.commit();

system.out

.println("轉賬成功");

} catch (exception e) catch (sqlexception e1)

}

JDBC事務處理

原子性 atomicity 組成事務處理的語句形成了乙個邏輯單元,不能只執行其中的一部分。一致性 consistency 在事務處理執行前後,資料庫是一致的 兩個賬戶要麼都變,或者都不變 隔離性 isolcation 乙個事務處理對另乙個事務處理沒有影響。持續性 durability 事務處理的效果...

JDBC的事務處理

jdbc的事務處理 事務,也是資料庫事務,指的是作為單個邏輯工作單元執行的一系列操作。正常的情況下,操作應該順利進行,與操作相關的所有資料庫資訊也成功地更新 但是,如果在這一系列過程中任何乙個環節出了差錯,導致操作失敗了,資料庫中所有資訊都必須保持操作前的狀態不變。否則,資料庫的資訊將會一片混亂而不...

JDBC之事務處理

try catch 首先開啟事務,然後執行dml操作,如果所有的dml操作都正確執行,則使用commit提交事務 如果有的dml操作不能正確執行,則捕獲該異常,跳過commit語句,在catch語句塊中使用rollback回滾事務。public class test catch exception ...