事务的作用和在ADO.NET中的应用

作用:
事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库的一部分。如果遇到错误,则不会对数据库作出任何修改。    
 
系统中的应用:
在一个银行应用程序中,如果资金从一个帐户转到另一个帐户,则会将一定的金额记入一个帐户的贷方,同时将相同的金额记入另一个帐户的借方。由于计算机可能会因为停电、网络中断等原因而出现故障,所以有可能更新了一个表中的行,但没有更新相关表中的行。如果数据库支持事务,则可以将数据库操作组成一个事务,以防止因这些事件而使数据库出现不一致。   
   
在ADO.NET中的应用: 
    在ADO.NET中。可以使用   Connection   和   Transaction   对象来控制事务。若要执行事务,请执行下列操作:     
    第一步:调用   Connection   对象的   BeginTransaction   方法来标记事务的开始。BeginTransaction   返回对   Transaction   的引用。请保留此引用,以便将其分配给在事务中登记的   Command。       
    第二步:将   Transaction   对象分配给要执行的   Command   的   Transaction   属性。如果通过活动的   Transaction   对象对   Connection   执行   Command,但该   Transaction   对象尚未分配给   Command   的   Transaction   属性,则将引发异常。     
   第三步:执行所需的命令。     
  调用  Transaction  对象的   Commit   方法来完成事务,或调用   Rollback   方法来取消事务。    
   
    以下代码示例使用   Microsoft?   SQL   Server?   上的   ADO.NET   来演示事务逻辑。   
 //   声明数据库连接和打开数据库   
SqlConnection   myConnection   =   new   SqlConnection("Data   Source=localhost;Initial   Catalog=Northwind;Integrated   Security=SSPI;");  
  myConnection.Open();  
  //   启动一个事务  
  SqlTransaction   myTrans   =   myConnection.BeginTransaction();   
  //   为事务创建一个命令  
  SqlCommand   myCommand   =   new   SqlCommand();  
  myCommand.Connection=myConnection;  
  myCommand.Transaction   =   myTrans;  
  try  
  {  
    myCommand.CommandText   =   "Insert   into   Region   (RegionID,      RegionDescription)   VALUES   (100,   "Description")";  
  myCommand.ExecuteNonQuery();  
  myCommand.CommandText   =   "Insert   into   Region   (RegionID,   RegionDescription)   VALUES   (101,   "Description")";  
  myCommand.ExecuteNonQuery();   
 //提交事务
  myTrans.Commit();  
  Console.WriteLine("Both   records   are   written   to   database.");  
  }  
  catch(Exception   e)  
  {  
 //如果遇到错误则回滚
  myTrans.Rollback();  
  Console.WriteLine(e.ToString());  
  Console.WriteLine("Neither   record   was   written   to   database.");  
  }  
  finally  
  {   
//关闭数据库连接
  myConnection.Close();  
  }  
     
  事务:是保证一组操作的完整性(要么整体成功,要么整体失败)  
  SqlConnection   :数据库连接对象  
  SqlCommand         :数据库命令对象,用以执行各种数据库操作

posted on 2009-10-15 11:47  lumnm  阅读(1751)  评论(1编辑  收藏  举报

导航