黑马程序员技术交流社区
标题: 事务问题 [打印本页]
作者: 蒋东东 时间: 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
谢谢啊 。那效率上是不是sql事务好一点?像银行项目中是不是都用sql事务呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |