Java--JDBC控制事務


Java--JDBC控制事務

博客說明

文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!

使用Connection對象來管理事務

  • 開啟事務:setAutoCommit(boolean autoCommit) :調用該方法設置參數為false,即開啟事務

    • 在執行sql之前開啟事務
  • 提交事務:commit()

    • 當所有sql都執行完提交事務
  • 回滾事務:rollback()

    • 在catch中回滾事務

代碼

public static void main(String[] args) {
	        Connection conn = null;
	        PreparedStatement pstmt1 = null;
	        PreparedStatement pstmt2 = null;
	
	        try {
	            //1.獲取連接
	            conn = JDBCUtils.getConnection();
	            //開啟事務
	            conn.setAutoCommit(false);
	
	            //2.定義sql
	            //2.1 張三 - 500
	            String sql1 = "update account set balance = balance - ? where id = ?";
	            //2.2 李四 + 500
	            String sql2 = "update account set balance = balance + ? where id = ?";
	            //3.獲取執行sql對象
	            pstmt1 = conn.prepareStatement(sql1);
	            pstmt2 = conn.prepareStatement(sql2);
	            //4. 設置參數
	            pstmt1.setDouble(1,500);
	            pstmt1.setInt(2,1);
	
	            pstmt2.setDouble(1,500);
	            pstmt2.setInt(2,2);
	            //5.執行sql
	            pstmt1.executeUpdate();
	            // 手動制造異常
	            int i = 3/0;
	
	            pstmt2.executeUpdate();
	            //提交事務
	            conn.commit();
	        } catch (Exception e) {
	            //事務回滾
	            try {
	                if(conn != null) {
	                    conn.rollback();
	                }
	            } catch (SQLException e1) {
	                e1.printStackTrace();
	            }
	            e.printStackTrace();
	        }finally {
              //關閉資源
	            JDBCUtils.close(pstmt1,conn);
	            JDBCUtils.close(pstmt2,null);
	        }

感謝

百度百科

以及勤勞的自己

關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計划


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM