在SqlServer中,SqlTransaction用于處理數據庫事務。事務是一系列數據庫操作的集合,要么全部成功執行,要么全部回滾。
使用SqlTransaction可以確保一系列的數據庫操作要么全部成功提交,要么全部回滾。下面是使用SqlTransaction的基本步驟:
創建SqlConnection對象,并打開數據庫連接。
創建SqlTransaction對象,通過SqlConnection的BeginTransaction方法。
執行一系列的數據庫操作,如插入、更新、刪除等操作,使用SqlCommand對象執行操作,并將SqlTransaction對象傳遞給SqlCommand的Transaction屬性。
如果所有操作都執行成功,調用SqlTransaction對象的Commit方法提交事務;如果任何一個操作失敗,調用SqlTransaction對象的Rollback方法回滾事務。
關閉SqlConnection對象。
下面是一個示例代碼:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
try
{
// 執行一系列的數據庫操作
using (SqlCommand command1 = new SqlCommand("INSERT INTO Table1 (Column1) VALUES (@Value1)", connection, transaction))
{
command1.Parameters.AddWithValue("@Value1", value1);
command1.ExecuteNonQuery();
}
using (SqlCommand command2 = new SqlCommand("UPDATE Table2 SET Column2 = @Value2 WHERE Column3 = @Value3", connection, transaction))
{
command2.Parameters.AddWithValue("@Value2", value2);
command2.Parameters.AddWithValue("@Value3", value3);
command2.ExecuteNonQuery();
}
// 所有操作成功,提交事務
transaction.Commit();
}
catch (Exception ex)
{
// 操作失敗,回滾事務
transaction.Rollback();
Console.WriteLine("Error: " + ex.Message);
}
}
在以上示例中,使用SqlConnection對象打開數據庫連接,并通過BeginTransaction方法創建SqlTransaction對象。
然后,在try塊中,使用SqlCommand對象執行一系列的數據庫操作,傳遞SqlTransaction對象給SqlCommand的Transaction屬性。
如果所有操作都成功執行,調用SqlTransaction對象的Commit方法提交事務。
如果任何一個操作失敗,catch塊中的代碼將被執行,調用SqlTransaction對象的Rollback方法回滾事務。
最后,在using塊結束后,SqlConnection對象會自動被關閉。