Tag - Transaction

C#教學-SqlConnection的Transaction功能

這篇要教C#怎樣使用SqlTransaction物件的方法,這在複雜一點的資料庫程式設計相當重要,C#也有一個物件能讓我們輕易的達到這樣的功能:

如果資料庫的操作不只一個SqlCommand,需要多個的時候,就有可能會發生其中一個錯誤,導致部分的有執行到,部分的沒執行到。這樣資料庫裡面的資料就會亂掉,有時會導致很嚴重的後果。

所以SqlTransaction的目的是在全部的SqlCommand都沒錯誤的執行完後,做一個Commit()動作全部送出,或在出錯的時候,做一個Rollback()的動作讓所有動作都沒發生。

基本上定義很簡單:

SqlConnection connection = new SqlConnection(ConnectionString);
SqlTransaction transaction;

然後要使用的時候:

connection.Open();
transaction = connection.BeginTransaction(“SampleTransaction”);

之後把每個要歸類到這個transaction的SqlCommand都設定:

SqlCommand cmd = new SqlCommand(“…”,connection);
cmd.Transaction = transaction;

這樣全部的SqlCommand執行完都沒發生錯誤,呼叫一個:

transaction.Commit();

有錯誤的話呼叫一個:

transaction.Rollback();

這樣就不會出現中途錯誤而只有部分影響資料庫的狀況,這我今天寫程式的時候突然遇到,因為偷懶沒寫transaction導致有一個Bug,所以特地發文上來。