1、对数据库做了ddl的 *** 作,但是没有进行提交 *** 作,此时就会提示受影响行数,如果最后没有进行提交 *** 作,数据就会回滚。
2、对数据进行 *** 作时,如果数据报错,如批量插入数据,其中有一条无法插入,那么此次的 *** 作就会被视为无效,数据库就会回滚,以保证数据的完整性。
3、在程序开发时,是以事务为原子性 *** 作的,此时可能因为一个业务 *** 作会对数据库的多个表进行增删改,如果中间出现问题,那么对已 *** 作部分的数据怎么办呢?
数据库的回滚就可以解决。
在BLL层处理:(多层系统)1-首先要启动Distributed Transaction Coordinator(DTC)服务;
2-添加引用System.Transactions
3-再using System.Transactions
4-using (TransactionScope scope = new TransactionScope())
{
conn.Open()
comm.CommandText = sql1
result1 = comm.ExecuteNonQuery()
comm.CommandText = sql2
result2 = comm.ExecuteNonQuery()
scope.Complete()
}
//只有{}内的方法要么全部执行成功,要么里面所有的 *** 作会回滚
注意:TransactionScope 这个类最大的用处并不是在一个数据库进行事务管理,如果是一个数据库,可考虑使用存储过程进行事务处理,效率最高;
如果要跨数据库 *** 作,则要使用此类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)