java中事務的介紹


 java的事務處理,若是對數據庫進行屢次操做,每一次的執行或步驟都是一個事務.若是數據庫操做在某java

一步沒有執行或出現異常而致使事務失敗,這樣有的事務被執行有的就沒有被執行,從而就有了事務的回sql

滾,取消先前的操做.....數據庫

   注:在Java中使用事務處理,首先要求數據庫支持事務。如使用MySQL的事務功能,就要求MySQL的表api

類型爲Innodb才支持事務。不然,在Java程序中作了commit或rollback,但在數據庫中根本不能生效。事務


JavaBean中使用JDBC方式進行事務處理get

public int delete(int sID){
  dbc = newDataBaseConnection();
  Connection con =dbc.getConnection();
  try {
   con.setAutoCommit(false);//更改JDBC事務的默認提交方式
   dbc.executeUpdate("delete from xiao where ID=" + sID);
   dbc.executeUpdate("delete fromxiao_content where ID=" + sID);
   dbc.executeUpdate("delete fromxiao_affix where bylawid=" + sID);
   con.commit();//提交JDBC事務
   con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式
   dbc.close();
   return 1;
  }
  catch (Exception exc) {
   con.rollBack();//回滾JDBC事務
   exc.printStackTrace();
   dbc.close();
   return -1;
  }
}it

    在數據庫操做中,一項事務是指由一條或多條對數據庫更新的sql語句所組成的一個不可分割的工做io

單元。只有當事務中的全部操做都正常完成了,整個事務才能被提交到數據庫,若是有一項操做沒有完date

成,就必須撤消整個事務。jdbc


例如在銀行的轉賬事務中,假定張三從本身的賬號上把1000元轉到李四的賬號上,相關的sql語句以下:

update account set monery=monery-1000 where name='zhangsan'

update account set monery=monery+1000 where name='lisi'

這個兩條語句必須做爲一個完成的事務來處理。只有當兩條都成功執行了,才能提交這個事務。若是有

一句失敗,整個事務必須撤消。


在connection類中提供了3個控制事務的方法:

(1) setAutoCommit(BooleanautoCommit):設置是否自動提交事務;

(2) commit();提交事務;

(3) rollback();撤消事務;

在jdbcapi中,默認的狀況爲自動提交事務,也就是說,每一條對數據庫的更新的sql語句表明一項事務

,操做成功後,系統自動調用commit()來提交,不然將調用rollback()來撤消事務。

在jdbc api中,能夠經過調用setAutoCommit(false)來禁止自動提交事務。而後就能夠把多條更新數據

庫的sql語句作爲一個事務,在全部操做完成以後,調用commit()來進行總體提交。假若其中一項sql

操做失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就能夠捕獲異常代碼塊中

調用rollback()方法撤消事務。

相關文章
相關標籤/搜索