国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

net中交易處理的解決方案

2024-07-21 02:17:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在數(shù)據(jù)庫(kù)軟件中,其核心就是對(duì)數(shù)據(jù)庫(kù)記錄進(jìn)行查詢添加修改及刪除操作,這是非常關(guān)鍵的也是必須非常謹(jǐn)慎的去完成。在現(xiàn)有的程序中經(jīng)常會(huì)有因?yàn)槟承╁e(cuò)誤而造成數(shù)據(jù)丟失甚至是系統(tǒng)崩潰,這就對(duì)我們的程序提出了一個(gè)數(shù)據(jù)操作的錯(cuò)誤處理要求。

例如在進(jìn)行銀行轉(zhuǎn)帳處理時(shí),我們先從轉(zhuǎn)出帳號(hào)減掉要轉(zhuǎn)出的金額,然后再在接收的帳號(hào)上加上相應(yīng)的金額。如果一切處理ok,我們的錢能順利到達(dá)接收帳號(hào)。但要是系統(tǒng)在執(zhí)行接收金額的步驟上出錯(cuò)了,那么不但自已錢變少了,該收到的人也沒(méi)有收到,那筆錢就這樣消失了.這是一個(gè)很危險(xiǎn)的現(xiàn)像。解決辦法就是要對(duì)數(shù)據(jù)操作的每一步都進(jìn)行錯(cuò)誤監(jiān)控,一旦發(fā)現(xiàn)出錯(cuò)了,馬上恢復(fù)數(shù)據(jù)至整個(gè)操作前的原始狀態(tài)。.net中提出了一個(gè)交易(transaction)的觀念,可以解決此類問(wèn)題。

我現(xiàn)在來(lái)用交易實(shí)現(xiàn)上面的例子:

string sql1 = "..."; //在轉(zhuǎn)出帳號(hào)上減去金額的處理sql語(yǔ)句
string sql2 = "..."; //在接收帳號(hào)上加上金額的處理sql語(yǔ)句
sqlconnection conn = new sqlconnection("..."); //建立數(shù)據(jù)庫(kù)連接
conn.open(); //接開數(shù)據(jù)庫(kù)連接
sqltransaction tran = conn.begintransaction(); //開始進(jìn)行交易處理
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(); //交易失敗,恢復(fù)數(shù)據(jù)
}
finally
{
conn.close(); //關(guān)閉數(shù)據(jù)庫(kù)連接。
}

其實(shí)還有另外一種方法也可以實(shí)現(xiàn)以上目標(biāo)。在transaction-sql中也提供了交易處理的方法(我想上種方法最終實(shí)現(xiàn)還是轉(zhuǎn)換為此方法實(shí)現(xiàn)的).我們可以把以上處理建立為一個(gè)存儲(chǔ)過(guò)程,然后再用sqlcommand進(jìn)行調(diào)用,這個(gè)存儲(chǔ)過(guò)程的主要的相關(guān)內(nèi)容為(其中...處代表要進(jìn)行數(shù)據(jù)庫(kù)記錄操作的多條sql語(yǔ)句):

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赤峰市| 海林市| 武清区| 张家口市| 灵璧县| 阿尔山市| 江孜县| 文山县| 吉林市| 宣汉县| 应用必备| 临邑县| 千阳县| 恩施市| 红安县| 无锡市| 涿鹿县| 崇文区| 长垣县| 怀安县| 南川市| 永济市| 乐业县| 高安市| 泾川县| 龙口市| 石门县| 大英县| 宝鸡市| 西昌市| 渝北区| 县级市| 宁阳县| 海安县| 南和县| 海南省| 崇文区| 灵台县| 山西省| 富宁县| 新宁县|