麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

net中交易處理的解決方案

2024-07-21 02:17:04
字體:
來源:轉載
供稿:網友
在數據庫軟件中,其核心就是對數據庫記錄進行查詢添加修改及刪除操作,這是非常關鍵的也是必須非常謹慎的去完成。在現有的程序中經常會有因為某些錯誤而造成數據丟失甚至是系統崩潰,這就對我們的程序提出了一個數據操作的錯誤處理要求。

例如在進行銀行轉帳處理時,我們先從轉出帳號減掉要轉出的金額,然后再在接收的帳號上加上相應的金額。如果一切處理ok,我們的錢能順利到達接收帳號。但要是系統在執行接收金額的步驟上出錯了,那么不但自已錢變少了,該收到的人也沒有收到,那筆錢就這樣消失了.這是一個很危險的現像。解決辦法就是要對數據操作的每一步都進行錯誤監控,一旦發現出錯了,馬上恢復數據至整個操作前的原始狀態。.net中提出了一個交易(transaction)的觀念,可以解決此類問題。

我現在來用交易實現上面的例子:

string sql1 = "..."; //在轉出帳號上減去金額的處理sql語句
string sql2 = "..."; //在接收帳號上加上金額的處理sql語句
sqlconnection conn = new sqlconnection("..."); //建立數據庫連接
conn.open(); //接開數據庫連接
sqltransaction tran = conn.begintransaction(); //開始進行交易處理
sqlcommand comm = new sqlcommand();
comm.connection = conn;
comm.transaction = tran;
try
{
comm.commandtext = sql1;
comm.executenonquery();
comm.commandtext = sql2;
comm.executenonquery();
tran.commit(); //接受交易,完成操作
}catch
{
tran.rollback(); //交易失敗,恢復數據
}
finally
{
conn.close(); //關閉數據庫連接。
}

其實還有另外一種方法也可以實現以上目標。在transaction-sql中也提供了交易處理的方法(我想上種方法最終實現還是轉換為此方法實現的).我們可以把以上處理建立為一個存儲過程,然后再用sqlcommand進行調用,這個存儲過程的主要的相關內容為(其中...處代表要進行數據庫記錄操作的多條sql語句):

begin transaction
...
if (@@error > 0) rollback transaction
else commit transaction


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人福利 | av色在线观看| 黄色大片大毛片 | 成人电影毛片 | 国产精品999在线 | 亚洲第一页夜 | 久久久久久久久浪潮精品 | 久久精品中文字幕一区二区三区 | 久久免费视频一区 | 久草在线综合 | 国产喷白浆10p | 亚洲aⅴ免费在线观看 | 久久久久久久一区 | 国产一区二区三区四区五区在线 | 91成人免费电影 | 亚洲欧美日韩久久精品第一区 | 午夜精品久久久久久中宇 | 91视频站 | 国产亚洲精品一区二区三区 | 国内精品久久久久久久星辰影视 | 日韩视频―中文字幕 | 麻豆一二区 | 欧美成人精品欧美一级 | 91精品国产九九九久久久亚洲 | 精品无码久久久久久国产 | 国产乱色精品成人免费视频 | 国产资源在线免费观看 | 狠狠操视频网站 | 久久91亚洲人成电影网站 | 国内自拍网址 | 久久久中精品2020中文 | 久久综合婷婷 | xxxxxx性| 日日狠狠久久偷偷四色综合免费 | 国产午夜精品一区二区三区不卡 | 狼伊千合综网中文 | 亚洲成人欧美在线 | 久久免费视频8 | 国产免费最爽的乱淫视频a 毛片国产 | www.精品一区 | 欧美一级淫片a免费播放口 91九色蝌蚪国产 |