網頁

2012年7月7日 星期六

C# ADO.NET Transaction 機制

一個交易的過程會往往包含數個操作不同資料庫的動作
例如從A帳戶取出金額,再將金額轉寫至B帳戶
但若考量在其中的過程若發生錯誤,可能導致金額的損失
而Transaction機制便是將數個資料庫操作過程視為一個邏輯單位
如果中間過程執行失敗,便將資料庫回到到執行前的狀態,被稱為Rollback
成功完成執行則為Commit

使用範例:

using(SqlConnection con = new SqlConnection())
{
  SqlConnection con = new SqlConnection("xxx");   //xxx = connection string
  con.Open();
  SqlTransaction tran = con.BeginTransaction();       //取得tran交易物件
 
  try
  {
    // 以下xxx代表要執行的SQL command
    SqlCommand updateCmd1 = new SqlCommand("xxx1'", con, tran);
    SqlCommand updateCmd2 = new SqlCommand("xxx2'", con, tran);
    updateCmd1.ExecuteNonQuery();
    updateCmd2.ExecuteNonQuery();
    tran.Commit();                              // transaction complete
  }
  catch (Exception ex)
  {
     tran.Rollback();                            // transaction failed
  }
}


1 則留言: