JDBC對事務的使用(包括自動提交,回滾等知識)
首先得清楚什么時候使用事務。 3.把想要一次性提交的幾個sql語句用事務進行提交 </p>
</span> 4.捕獲異常,進行數據的回滾(回滾一般寫在catch塊中)
當你需要一次執行多條SQL語句時,可以使用事務。通俗一點說,就是,如果這幾條SQL語句全部執行成功,則才對數據庫進行一次更新,如果有一條SQL語句執行失敗,則這幾條SQL語句全部不進行執行,這個時候需要用到事務。
其次才是事務的具體使用。
1.獲取對數據庫的連接(代碼這里省略了吧,網上太多了,對各種數據庫的連接的都有)
2.設置事務不自動提交(默認情況是自動提交的) conn.setAutoCommit(false); //其中conn是第一步獲取的隨數據庫的連接對象。
Statement stmt = null;
stmt = conn.createStatement();
stmt.executeUpdate(sql1);
stmt.executeUpdate(Sql2);
conn.commit(); //使用commit提交事務
catch(Exception 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語句前的狀態。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!