-1
我正在創建一個具有多個屏幕的Java獨立應用程序。如何退出應用程序使用Java回滾數據
我正在執行許多由多個DML語句組成的存儲過程。
所有工作正常。但問題是,如果用戶在中間退出應用程序,我應該可以通過所有存儲過程對ROLLBACK數據進行修改。
任何人都可以請幫我回滾數據。提前致謝。
我正在創建一個具有多個屏幕的Java獨立應用程序。如何退出應用程序使用Java回滾數據
我正在執行許多由多個DML語句組成的存儲過程。
所有工作正常。但問題是,如果用戶在中間退出應用程序,我應該可以通過所有存儲過程對ROLLBACK數據進行修改。
任何人都可以請幫我回滾數據。提前致謝。
你必須關閉自動提交了,做你自己提交/回滾:
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try {
// do work
conn.commit();
} finally {
conn.rollback();
}
}
如果try
塊正常完成,所有的工作承諾。如果「做功」會拋出異常,則所有內容都會回滾。
在commit()
之後,finally塊仍然會調用rollback()
,但由於在commit()
之後什麼也沒有發生,所以它是無操作的。如果你不喜歡,你可以這樣做:
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
boolean commit = false;
try {
// do work
commit = true;
} finally {
if (commit)
conn.commit();
else
conn.rollback();
}
}
這取決於你的設計。你是否在每一次成功交易之後做出承諾? – user2953113