黑马程序员技术交流社区

标题: 事务问题 [打印本页]

作者: 蒋东东    时间: 2013-11-7 09:54
标题: 事务问题
本帖最后由 蒋东东 于 2013-11-8 09:48 编辑

ADO.NET里的事务操作跟直接在数据库里用tsql写事务有什么区别?
作者: dashanren    时间: 2013-11-7 10:22
本帖最后由 dashanren 于 2013-11-7 10:24 编辑

   .NET事务主体主要分成两种情况:手动事务和自动事务
   .NET目前提供了三种事务机制:
        (1)在SQL中使用事务
        (2)在ADO.NET中使用事务
        (3)分布式事务(Com+事务)—主要用于自动事务控制
    在ADO.NET和在SQL的区别:
       优点是:
            (A)操作简单(主要是对象几个方法)和数据库事务差不多
            (B)独立于数据库 不同数据库专有代码被隐藏了
       缺点是:
            (A)事务不能跨多个数据库连接(分布式事务可以跨多个数据库)
            (B)事务执行必须依靠一个存在的数据库连接,从Transaction对象生成就可以看出通过  SqlConnection或OleDBConnection对象获得。
            (C)ADO.net中分布式事务可以跨多个数据库,如果其中一个是SQLServer数据库的话,通过SQLserver连接服务器连接别的数据库,但如果是DB2和Oracle之间就不行。


        A:在SQL中使用事务

关键字:Begin Trans,Commit Trans,RollBack Trans实现,这种方式最为简单


--在SQL中使用事务
begin Trans
declare @orderError
int,@productError int
delete from OrderList
where id=45
select @orderError
=@@Error

delete from ProductList
where id=44
select @productError
=@@Error

if(@orderError==0 and @productError==0)
commit Trans
else
RollBack Trans


         B:在ADO.NET中使用事务:

在ADO.net中主要通过Transaction对象来实现事务的基本处理。

SqlConnection和OledbConnection对象有一个BeginTransaction方法,该方法返回一个SqlTransaction或者OleDBTransaction对象,而这两个对象中Commit和RollBack方法来管理事务处理。很简便明了


作者: zhangqiang    时间: 2013-11-7 13:28
     1操作简单(主要是对象几个方法)和数据库事务差不多.
     2独立于数据库 不同数据库专有代码被隐藏了.
     3事务不能跨多个数据库连接(分布式事务可以跨多个数据库).
作者: 蒋东东    时间: 2013-11-7 15:45
dashanren 发表于 2013-11-7 10:22
.NET事务主体主要分成两种情况:手动事务和自动事务
   .NET目前提供了三种事务机制:
        (1)在SQL中 ...

谢谢啊 。那效率上是不是sql事务好一点?像银行项目中是不是都用sql事务呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2