jdbc事務使用例子

本地事務處理實例
 public void transferAccount() { 
		 Connection conn = null; 
		 Statement stmt = null; 
		 try{ 
			 conn = getDataSource().getConnection(); 
			 // 將自動提交設置爲 false,
			 //若設置爲 true 則數據庫將會把每一次數據更新認定爲一個事務並自動提交
			 conn.setAutoCommit(false);
			
			 stmt = conn.createStatement(); 
			 // 將 A 賬戶中的金額減少 500 
			 stmt.execute("\
             update t_account set amount = amount - 500 where account_id = 'A'");
			 // 將 B 賬戶中的金額增加 500 
			 stmt.execute("\
             update t_account set amount = amount + 500 where account_id = 'B'");
			
			 // 提交事務
		     conn.commit();
			 // 事務提交:轉賬的兩步操作同時成功
		 } catch(SQLException sqle){ 			
			 try{ 
				 // 發生異常,回滾在本事務中的操做
                conn.rollback();
				 // 事務回滾:轉賬的兩步操作完全撤銷
                 stmt.close(); 
                 conn.close(); 
			 }catch(Exception ignore){ 
				
			 } 
			 sqle.printStackTrace(); 
		 } 
	 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章