JavaBean 中使用JDBC方式進(jìn)行事務(wù)處理 | |
在Java數據庫操作中,一項事務(wù)是指由一條或多條對數據庫更新的sql語(yǔ)句所組成的一個(gè)不可分割的工作單元。只有當事務(wù)中的所有操作都正常完成了,整個(gè)事務(wù)才能被提交到數據庫,如果有一項操作沒(méi)有完成,就必須撤消整個(gè)事務(wù)。我們通過(guò)提交commit()或是回滾rollback()來(lái)結束事務(wù)的操作。關(guān)于事務(wù)操作的方法都位于接口java.sql.Connection中。 在第一次建立與數據庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的, jdbc api中,可以通過(guò)調用setAutoCommit(false) 來(lái)禁止自動(dòng)提交事務(wù)。然后就可以把多條更新數據庫的sql語(yǔ)句做為一個(gè)事務(wù),在所有操作完成之后,調用commit()來(lái)進(jìn)行整體提交。倘若其中一項sql操作失敗,就不會(huì )執行commit()方法,而是產(chǎn)生相應的sqlexception,此時(shí)就可以捕獲異常代碼塊中調用rollback()方法撤消事務(wù)。下面是一個(gè)例子; 比如:有兩張表,一個(gè)記錄用戶(hù)帳戶(hù)(useraccount),一個(gè)是系統帳(sysaccount),現在有一個(gè)用戶(hù)要向系統寄錢(qián)買(mǎi)東西,就要此行下面兩條語(yǔ)句: String sql1 = "update useraccount set monery=monery-1000 where name='username'"; String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'"; 但如果第一條執行了而第二條語(yǔ)句執行出錯了就會(huì )造成不良后果。這是就可以用手動(dòng)提交的方式來(lái)防止這種事情的發(fā)生:主要代碼
|
聯(lián)系客服