数据库事务用于控制数据提交到数据库。例如,在标准的帐户程序,帐户的借贷必须同时完成。因为电脑偶尔发生故障(电力中断、网络中断,等等),可能有些记录被更新或者添加,可是另一些没有。为了不这些状况,能够使用事务。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(); }