• 事务的作用和在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         :数据库命令对象,用以执行各种数据库操作
  • 相关阅读:
    各自的特点:
    errno
    内存(堆)的动态申请和释放
    printf和scanf中的%控制
    linux中软件包管理
    Ubuntu新装系统要装软件
    数组
    linux c中需要记住的东西
    硬件设计中的一些思路
    传输线理论
  • 原文地址:https://www.cnblogs.com/lumnm/p/1583767.html
Copyright © 2020-2023  润新知