A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋东东 中级黑马   /  2013-11-7 09:54  /  1458 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蒋东东 于 2013-11-8 09:48 编辑

ADO.NET里的事务操作跟直接在数据库里用tsql写事务有什么区别?

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 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方法来管理事务处理。很简便明了

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
     1操作简单(主要是对象几个方法)和数据库事务差不多.
     2独立于数据库 不同数据库专有代码被隐藏了.
     3事务不能跨多个数据库连接(分布式事务可以跨多个数据库).

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
dashanren 发表于 2013-11-7 10:22
.NET事务主体主要分成两种情况:手动事务和自动事务
   .NET目前提供了三种事务机制:
        (1)在SQL中 ...

谢谢啊 。那效率上是不是sql事务好一点?像银行项目中是不是都用sql事务呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马