原生jdbc回滾失效

2021-10-10 02:09:09 字數 1057 閱讀 3884

我這裡預設就是innodb,所以不是這個異常

剛開始我的**是:

connection connection = datasource.getconnection();

connection.setautocommit(false);

preparedstatement preparedstatement = connection.preparestatement(sql);

string sql = "***x";

// 異常之前提交

connection.commit();

preparedstatement.close();

connection.close();

// 我在這裡模擬後續的操作,假設這裡有乙個異常

int a = 5/0; // 這裡理論上會報異常

system.out.println(a);

可以看到上述**connection.commit()在異常發生之前提交了,並且關閉了連線,所以下面的異常就無法回滾

修改上述**:

connection connection = datasource.getconnection();

connection.setautocommit(false);

preparedstatement preparedstatement = connection.preparestatement(sql);

string sql = "***x";

// 我在這裡模擬後續的操作,假設這裡有乙個異常

int a = 5/0; // 這裡理論上會報異常

system.out.println(a);

// 最後再提交,否則無法回滾

connection.commit();

preparedstatement.close();

connection.close();

總結: 事務的提交和管理都應放到**段的最後面,防止無法提交

JDBC 批處理 無法回滾

預編譯 批處理模式更新資料 suppresswarnings deprecation private boolean batchexecuteinserttest if recordnum commit size 0 catch exception e catch exception e2 fina...

spring事務回滾失效的問題

今天碰到乙個鬱悶的問題。spring配置的事務回滾無效。而且奇怪的是 中總共操作了3張表的資料,但是其中2張表在發生異常時回滾了,另一張表死活不回滾。開始還以為是事務巢狀導致的,但是搜尋一番發現spring預設的事務傳播機制是支援巢狀事務,並且發生異常會全部回滾了 這就奇了怪了,試了好幾遍仍然是其中...

truncate方法導致事務回滾失效

前景提要 配置多資料來源,配置事務,刪除資料並重新新增資料,新增出現問題後無法回滾。檢查結果 刪除使用的truncate方法,該方法在plsql中執行無需submit。無論是oracle資料庫,還是mysql資料庫,刪除使用truncate放,都無法利用事務回滾。知識點 1.刪除表中的資料的方法有d...