數據庫事務用於控制數據提交到數據庫。例如,在標準的帳戶程序,帳戶的借貸必須同時完成。因爲電腦偶爾發生故障(電力中斷、網絡中斷,等等),可能有些記錄被更新或者添加,可是另一些沒有。爲了不這些狀況,能夠使用事務。ADO.NET 中的事務和 ADO 同樣,是在數據庫級別處理:即數據庫必須支持事務。
SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind"); SqlCommand myCommand = new SqlCommand(); SqlTransaction myTrans; // 打開鏈接 myConnection.Open(); // 指定鏈接屬性 myCommand.Connection = myConnection; // 開始事務 myTrans = myConnection.BeginTransaction(); // 爲一個掛起的本地事務指定事務對象 myCommand.Transaction = myTrans; try { myCommand.CommandText = "DELETE FROM Region WHERE (RegionID = 100) OR (RegionID = 101)"; myCommand.ExecuteNonQuery(); // 插入第一條記錄 myCommand.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (100, 'MidWestern')"; myCommand.ExecuteNonQuery(); // 插入第二條記錄 myCommand.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (101, 'MidEastern')"; myCommand.ExecuteNonQuery(); // 提交數據庫事務 myTrans.Commit(); Console.WriteLine("兩條記錄寫入數據庫!"); } catch (Exception e) { // 從掛起狀態回滾事務 myTrans.Rollback(); Console.WriteLine(e.ToString()); Console.WriteLine("沒有記錄寫入數據庫!"); } finally { // 關閉鏈接 myConnection.Close(); }