数据库的操作比较复杂,特别是插入等操作难免有错误,为了保证数据的完整性,在数据库操作中常常需要使用事务。通过事物来完成一组操作,一旦其中出现任何错误,可以回滚这一组操作,这样数据就不会因为操作中的某个失误而变得不完整。

         SQL SERVERADO.NET为例,数据库中操作数据库比较多的是使用两种方法,一个是 通过SqlCommand对象,另一种是SqlDataAdapter对象,下面分别介绍这两种情况下使用事务的方法。

一、使用SqlCommand操作数据库时候使用事务

因为使用起来比较方便,所以这种方法是使用比较多的方法,代码如下:

 

DotNet使用事务的方法SqlConnection conn = new SqlConnection(ConnectString);//定义一个SqlConnection
DotNet使用事务的方法
conn.Open();
DotNet使用事务的方法SqlTransaction trans 
= conn.BeginTransaction();//获得conn的TranSaction
DotNet使用事务的方法
//定义一组操作Command
DotNet使用事务的方法
SqlCommand cmd1 = new SqlCommand();
DotNet使用事务的方法SqlCommand cmd2 
= new SqlCommand();
DotNet使用事务的方法
//设置command的属性
DotNet使用事务的方法
cmd1.Connection = conn;
DotNet使用事务的方法cmd1.CommandText 
= cmdText;
DotNet使用事务的方法cmd.Transaction 
= trans;
DotNet使用事务的方法
DotNet使用事务的方法cmd2.Connection 
= conn;
DotNet使用事务的方法cmd2.CommandText 
= cmdText;
DotNet使用事务的方法cmd2.Transaction 
= trans;
DotNet使用事务的方法
//操作
DotNet使用事务的方法
try
}

 

二、使用SqlDataAdapter操作数据库时候使用事务

       SqlDataAdapter的操作使用事务不如SqlCommand 普遍,但有时也要使用。一般都是SqlDataAdapterUpdate 方法的时候需要回滚,方法如下:

 

DotNet使用事务的方法public bool Update(DataSet ds,string strSql,SqlTransaction theTrans,SqlConnection conn)
DotNet使用事务的方法
public bool Update(DataSet ds,string strSql,SqlTransaction theTrans,SqlConnection conn)
}

 

调用事务

 

DotNet使用事务的方法SqlTransaction theTrans = conn.BeginTransaction(IsolationLevel.Serializable);
}

 

三、使用COM+的事务功能

       在分层设计的系统中,以上两种方法都应该在数据层的内部完成,而使用系统Com+的事务功能则可以把事务放到高层中进行,这样操作起来更加灵活。不过按照系统分层的原则,数据层的事情最好不要放到其他层中进行,所以除非必要,这种处理方式应该尽量避免。

       EnterpriseServices.ServicedComponent继承类

       先添加引用System.EnterpristServices

 

DotNet使用事务的方法namespace xxx
}

 

 

       上面的类中的InsertData方法就是一个完整的事务,方法中的操作可以保持完整性,可以把一组数据操作放在这儿执行。这种操作不是单独对数据库适用,只是数据库操作也可以使用这种方法来完成一组事务,而且对多个数据库的同步来说,这是比较好的一种选择。

四、  使用SeviceConfig来完成事务

       对比上面的ServicedComponent来说,使用SeviceConfig比较方便。使用ServicedComponent的程序集需要强名称,而且这个程序集所引用的程序集也必须是强名称。当然不是说强名称不好,但很多人有时候在发布前的开发调试阶段可能把这一步就先空着,等到发布的时候再加上强名称。还有,似乎在Web程序使用自己开发的Com+总是有些问题,不知道哪儿配置错了,反正我现在就是这样,每次修改都需要用regsvcs/u 把程序集发注册掉,然后重新生成程序集,再使用regsvcs 注册,然后用gacutil/i 添加到 GAC(Global Assembly Cache),不然的话使用SevicedComponent派生出来的类就有问题。好了,现在终于可以不用ServicedComponent了,可以使用SeviceConfig了,SeviceConfig的好处就是可以使用Service但是又不需要把它绑定到组件中去。但是,别高兴太早,一个不幸的消息就是SeviceConfig只能在Windows 2003下面使用,除非你保证自己开发的程序只运行在Windows2003平台下,否则你还是老老实实的使用前面几种方法吧。闲言少叙,我们还是来看看怎么用吧。

 

DotNet使用事务的方法using System.EnterpriseServices;
DotNet使用事务的方法
public class  MyClass
}

相关文章:

  • 2021-12-08
  • 2021-11-08
  • 2022-12-23
  • 2021-05-18
  • 2021-08-22
  • 2021-10-10
  • 2021-11-06
  • 2022-12-23
猜你喜欢
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2021-09-13
  • 2021-09-27
相关资源
相似解决方案