熱點推薦:
您现在的位置: 電腦知識網 >> 電腦故障 >> 正文

.net 中交易處理的解決方案

2013-11-12 00:04:27  來源: 電腦故障 

  在數據庫軟件中其核心就是對數據庫記錄進行查詢添加修改及刪除操作這是非常關鍵的也是必須非常謹慎的去完成在現有的程序中經常會有因為某些錯誤而造成數據丟失甚至是系統崩潰這就對我們的程序提出了一個數據操作的錯誤處理要求
  
  例如在進行銀行轉帳處理時我們先從轉出帳號減掉要轉出的金額然後再在接收的帳號上加上相應的金額如果一切處理OK我們的錢能順利到達接收帳號但要是系統在執行接收金額的步驟上出錯了那麼不但自已錢變少了該收到的人也沒有收到那筆錢就這樣消失了這是一個很危險的現像解決辦法就是要對數據操作的每一步都進行錯誤監控一旦發現出錯了馬上恢復數據至整個操作前的原始狀態NET中提出了一個交易(Transaction)的觀念可以解決此類問題
  
  我現在來用交易實現上面的例子:
  
  string sql = ;  //在轉出帳號上減去金額的處理SQL語句
  string sql = ;  //在接收帳號上加上金額的處理SQL語句
  SqlConnection conn = new SqlConnection();  //建立數據庫連接
  connOpen();  //接開數據庫連接
  SqlTransaction tran = connBeginTransaction();  //開始進行交易處理
  SqlCommand comm = new SqlCommand();
  commConnection = conn;
  commTransaction = tran;
  try
  {
  commCommandText = sql;
  commExecuteNonQuery();
  commCommandText = sql;
  commExecuteNonQuery();
  tranCommit();  //接受交易完成操作
  }catch
  {
  tranRollback();  //交易失敗恢復數據
  }
  finally
  {
  connClose();  //關閉數據庫連接
  }
  
  其實還有另外一種方法也可以實現以上目標在transactionsql中也提供了交易處理的方法(我想上種方法最終實現還是轉換為此方法實現的)我們可以把以上處理建立為一個存儲過程然後再用SqlCommand進行調用這個存儲過程的主要的相關內容為(其中處代表要進行數據庫記錄操作的多條SQL語句):
  
  BEGIN TRANSACTION
  
  IF (@@ERROR > ) ROLLBACK TRANSACTION
  ELSE COMMIT TRANSACTION
  

From:http://tw.wingwit.com/Article/Fault/201311/10606.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.