Ⅰ JAVA編程的回滾機制是什麼樣的,最好能舉個實例,有人會嗎
就是在同一個事物中,好比轉賬,其實追根到底兩個update語句,你的賬戶專錢減少,他的賬戶錢增多,兩條sql必須一屬起執行成功,任何一個失敗了,都將回復到未執行這兩條sql時的狀態。
試想:若一條成功,一條失敗,你找誰算賬呢?
Ⅱ java jdbc中這個樣一個方法事物回滾 後面的 catch finally 里的代碼是什麼意思 請詳細解釋一下謝謝
if(conn!=null)//操作失敗後回滾資料庫
conn.rollback();
throw e;//拋出異常
}
conn.setAutoCommit(bb);//設置是手動提交事物還是自動提交
ConnectionManager.closeConnection(conn);關閉改連接
Ⅲ java 如何配置異常時回滾例子
你是否使用了什麼框架么? 如果使用的 Spring 。你可以使用 AOP.進行配置。
如果使用 JDBC 就在catch 判斷。
Connectioncon=null;
PreparedStatementps=null;
try{
con.setAutoCommit(false);
//doyourJDBCcode.con.commit();
con.setAutoCommit(true);
}catch(SQLExceptione){
if(con!=null){
try{
con.rollback();
}catch(SQLExceptione1){
e1.printStackTrace();
}
}
e.printStackTrace();
}finally{
if(con!=null){
try{
con.rollback();
}catch(SQLExceptione1){
e1.printStackTrace();
}
}
}
基本就這樣。你可以看看。
Ⅳ 資料庫中前滾、回滾是什麼有什麼作用
資料庫中的undo、rollback,既撤消和回滾。首先這2個操作是針對事務來說的,事務的版概念請樓主自行網路權。
舉一個簡單的例子,A給B轉賬,在資料庫中就需要給A,B進行update操作。這2條sql語句必須都執行或者都不執行(稱為一個事務)。假如先執行B的update語句,B的金額增加了100,然後執行A的update語句,A的金額減100。如果A的余額大於100,那麼2個語句沒問題,但是A的余額小於100時,再減100就變成負的了,這不符合實際情況。所以第二條sql就出現無法執行,那麼資料庫的狀態必須回到沒有執行B的update語句之前。
當一個事務執行的時候,資料庫會依次執行中間的sql語句,當某一條sql發生錯誤以後,根據事務的原子性,通過2種方式使資料庫回到事務沒有執行的狀態。撤銷就是相當於不執行commit;回滾就是執行一遍相反的操作,比如再執行B的update金額減100。
Ⅳ 在Java中事物的提交和回滾是什麼意思
向資料庫提交數據或修改數據,如果你覺得沒有問題,就可以提交,如果其中有一個環節出錯了,就可以設置回滾,可以根據判斷進行回滾,不是非要出異常了才回滾,如何回滾如何提交要看你的業務邏輯。
Ⅵ 關於java事物回滾的問題!
Connection con = dbc.getConnection();
try {
con.setAutoCommit(false);//默認為自動提交事務,所以設置為false
。。。。//進行JDBC操作
con.commit();//取消了自動提交,手動執行
}catch (Exception exc) {
con.rollBack();//回滾JDBC事務,這句話是你要的,加在這里表示如果資料庫操作出現異常, 則回滾事務
}
Ⅶ 請教:如何在java程序中實現數據操作的「回滾」
--事務處理:
begin tran --開始處理數據時,開啟事務
--下面是具體的處理語句
insert into 表 values(1)
if @@error<>0 --如果處理語句出錯,回滾事務
begin
rollback tran
goto lbexit
end
update 表 set 欄位=1
if @@error<>0 --如果處理語句出錯,回滾事務
begin
rollback tran
goto lbexit
end
commit tran --所有執行成功,提交事務
lbexit:
JAVA的話,可以在連接對象上啟用事務
Ⅷ java資料庫編程中,回滾事務如何理解
java資料庫中存抄在事務的概念,最經典的例子的就是轉賬,張三給李四轉賬,那麼首先要扣除張三的錢,然後加給李四,這整個過程不能分開操作,整個過程稱為事務,那麼如果現在張三扣除了錢,在轉賬給李四之前出現了異常,那麼問題來了,現在轉賬動作做到一半,如果不回滾事務的話,那麼就出現張三錢少了,但是李四沒加錢,這是不允許的,所以出現了回滾事務的這一動作。這樣好理解些么?
Ⅸ java中一個方法增加兩個表,怎麼回滾
你可以通過在你執行的方法體中,使用try catch進行異常捕獲,獲取連接後設置不自動提交conn.setAutoCommit(false); 執行失敗的話會進行異常處理部分,conn.rollback();,就可完成事務的回滾,如下大致代碼:
try {
//獲取連接對象
conn = DBConnection.getConn();
//不自動提交
conn.setAutoCommit(false);
//執行增刪等操作
....
} catch (SQLException e) {
//事務回滾
conn.rollback();
// TODO Auto-generated catch block
e.printStackTrace();
}
Ⅹ java中jdbc多表操作如何事物回滾
可以把要執行的四個SQL語句寫到同一個List中再調用此方法
你也可以自己寫
主要注意
執行sql插入前要取消自動提交 con.setAutoCommit(false);
全部sql語句執行完成後再提交 con.commit();
執行過程拋出異常則回滾 con.rollback();
希望對你有幫助
public boolean exeupdate(List<String> sqls) throws SQLException {
boolean flag = false;
openPoolConnection();//創建連接
try {
//
con.setAutoCommit(false);//取消自動提交
for(int i=0;i<sqls.size();i++)
{
pstmt = con.prepareStatement(sqls.get(i));
int rows = pstmt.executeUpdate();
}
flag = true;
con.commit();//提交
} catch (Exception e) {
con.rollback();//回滾
e.printStackTrace();
} finally {
this.closeAll();//關閉連接 數據集 語句對象
}
return flag;
}