中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaBean中怎么利用JDBC實現事務處理

發布時間:2021-07-01 17:01:31 來源:億速云 閱讀:138 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關JavaBean中怎么利用JDBC實現事務處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

JDBC(Java Data Base Connectivity,java數據庫連接)是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數據庫開發人員提供了一個標準的API,據此可以構建更高級的工具和接口,使數據庫開發人員能夠用純 Java API 編寫數據庫應用程序,同時,JDBC也是個商標名。

Java數據庫操作中,一項事務是指由一條或多條對數據庫更新的sql語句所組成的一個不可分割的工作單元。只有當事務中的所有操作都正常完成了,整個事務才能被提交到數據庫,如果有一項操作沒有完成,就必須撤消整個事務。我們通過提交commit()或是回滾rollback()來結束事務的操作。關于事務操作的方法都位于接口java.sql.Connection中。

在***次建立與數據庫的連接時,在缺省情況下,連接是在自動提交模式下的, jdbc api中,可以通過調用setAutoCommit(false) 來禁止自動提交事務。然后就可以把多條更新數據庫的sql語句做為一個事務,在所有操作完成之后,調用commit()來進行整體提交。

倘若其中一項sql操作失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就可以捕獲異常代碼塊中調用rollback()方法撤消事務。下面是一個例子:

比如:有兩張表,一個記錄用戶帳戶(useraccount),一個是系統帳(sysaccount),現在有一個用戶要向系統寄錢買東西,就要此行下面兩條語句:

String sql1 = "update useraccount set monery=monery-1000 where name='username'";  String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'";

但如果***條執行了而第二條語句執行出錯了就會造成不良后果。這是就可以用手動提交的方式來防止這種事情的發生:主要代碼:

try{  .  .  .  conn=DriverManager.getConnection("..."); //鏈接數據庫  conn.setAutoCommit(false);//禁止自動提交事務  stmt = conn.Create....  String sql1 = "update useraccount set monery=monery-1000 where name='usename'";  String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'";  stmt=conn.createStatement();  stmt.executeUpdate(sql1);  stmt.executeUpdate(sql2);  conn.commit(); //統一提交。  }catch(SQLException e){  conn.rollback(); //倘若其中一項sql操作失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就可以捕獲 異常代碼塊中調用rollback()方法撤消事務。  e.printStackTrace();  }  finally{  if(stmt!=null){  stmt.close();  }  if(conn!=null){  stmt.close();  }  }

盡管JDBC在JAVA語言層面實現了統一,但不同數據庫仍舊有許多差異。為了更好地實現跨數據庫操作,于是誕生了Hibernate項目,Hibernate是對JDBC的再封裝,實現了對數據庫操作更寬泛的統一和更好的可移植性。

看完上述內容,你們對JavaBean中怎么利用JDBC實現事務處理有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

习水县| 革吉县| 石柱| 广平县| 辽阳市| 安泽县| 高雄县| 通江县| 上杭县| 东乡| 沙洋县| 灵寿县| 林芝县| 泰州市| 乌苏市| 江都市| 进贤县| 元朗区| 河间市| 蕲春县| 西安市| 永平县| 延川县| 泽普县| 乌兰县| 芒康县| 德格县| 清丰县| 嘉祥县| 安陆市| 大兴区| 通州区| 达州市| 岳阳市| 微山县| 邢台县| 内江市| 绥化市| 惠水县| 左云县| 兴山县|