conn.setAutoCommit()用法及作用

事務操作數據:

(一)

eg:

假如銀行轉賬系統

從張三的賬戶轉1000元到小羅的賬戶
這個操作需要分兩步
1.張三賬戶減少1000元
2.小羅賬戶增加1000元
假如於到斷電等等,而剛好張三減了1000,而此時小羅卻不增加。。。。可以想象銀行這下有事做了

所以使用事務操作數據來搞定

 

(2)

java使用事務非常簡單,首先調用conn.setAutoCommit(boolean b)方法,傳入一個false,這樣將不會自動提交,而需要使用conn.commit()方法,手動提交事務,當然只有在確認兩個步驟都沒有出錯的情況下,才能提交,這樣才能保證整個操作的完整性,一旦出錯,使用conn.rollback()方法,回滾事務,這樣的話,整個事務都將不被提交。那麼如何判斷有沒有出錯呢,非常簡單,執行數據庫操作的方法,都會拋出java.sql.SQLException,所以需要使用try……catch語句塊捕獲異常,在catch塊中,使用conn.rollback()回滾事務即可
       在數據庫調用的javabean中conn.setAutoCommit()的功能是每執行一條SQL語句,就作爲一次事務提交。但一般在項目中很有可能需要執行多條SQL語句作爲一個事務。若有一個執行不成功,就會rollback();

一般來講,大家對數據庫中的表單,主要是增、刪、改、查這四個操作,如果你的程序當中,遇到一次業務邏輯需要兩次或兩次以上的對相同數據表的增刪改操作,那麼,爲了數據的一致性,(或者具體說,在你的一次業務邏輯的處理過程中,其他(線程或程序或業務處理)的對相同數據的相同兩次查詢所得結果相同。)我們會利用數據庫的事務操作,將一次業務邏輯所包含的所有操作封裝在一個事務裏,一次將多個操作進行提交。
而conn的setAutoCommit方法,是指,在事務當中,是否執行一條語句就自動提交一次。
想在一個事務裏進行多個操作。就必然將setAutoCommit的參數設置成false,在多個操作的最後調用conn.commit()方法,進行手動提交

(3)參數:true和false

假設如下:
1 數據庫一個表格有50條記錄
2 你設置參數爲false
則在你執行整個查詢SQL期間,一直是沒有事務的,那麼如果你的查詢用到了一些函數,這些函數包含了多個查詢語句,那麼有可能會出現不一致的情況。
也就是說,函數、存儲過程等,他們都將運行在非事務的環境下。
而你設置爲true,則沒有任何問題了,讀一致性將保證不會出現問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章