JavaBean中使用JDBC方式進行事務處理
在JavaBean資料庫操作中,一項事務是指由一條或多條對資料庫更新的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();
}
}
相關文章
- Redis使用IO多路複用進行事件處理機制Redis事件
- Spring 使用註解方式進行事物管理Spring
- 博文推薦|使用 Apache Pulsar 和 Scala 進行事件流處理Apache事件
- JDBC事務處理設計JDBC
- 開始懷疑Spring框架的jdbc事務處理方式Spring框架JDBC
- JDBC 事務處理【最終版】JDBC
- JDBC當中的批處理JDBC
- JDBC中Date日期物件的處理JDBC物件
- JDBC 批處理JDBC
- Android自定義TitleBar 自定義標題欄 並進行事件處理Android事件
- 聊聊專案中定時任務的處理方式
- JDBC與JavaBean學習筆記(二)JDBCJavaBean筆記
- JDBC處理包含CLOB欄位JDBC
- MySQL中的事務處理MySql
- java中批量插入資料jdbc hibernate Mybatis使用方式JavaJDBCMyBatis
- RAC中unknown 狀態的處理方式
- ETL中後設資料處理的方式
- Ajax 處理時進度條使用
- 使用 canvas 對影象進行處理Canvas
- 使用 getopt() 進行命令列處理命令列
- JDBC使用PreparedStatement的好處JDBC
- JDBC【PreparedStatment、批處理、處理二進位制、自動主鍵、呼叫儲存過程、函式】JDBC儲存過程函式
- oracle當前執行事務鎖Oracle
- error的處理方式Error
- 在Linux中,如何使用awk和sed進行文字處理?Linux
- Node中POST請求的正確處理方式
- C#中處理JSON資料的方式C#JSON
- Entity Framework中 批量提交 事務處理Framework
- C#處理Access中的事務C#
- 軟體中事務處理問題!
- Java中的任務超時處理Java
- .NET使用MailKit進行郵件處理AI
- 使用 Linux/Unix 進行文字處理Linux
- oracle使用者鎖住、過期處理方式Oracle
- 使用Sql插入sde是ObjectId的處理方式SQLObject
- JDBC中事務的問題JDBC
- 使用 Intervention/image 對 Laravel 專案中的圖片進行處理Laravel
- python Execept處理方式Python