在ADO.NET中使用事务保护数据的完整性(3)

原创 2004年06月14日 15:19:00

事务在ADO.Net

Ado.net 支持两种事务模型,这在.Net Framework 文档中作为指南有定义.事务指南手册介绍了通常应该知道的数据库事务, 它影响操作单个目标数据库.一个类通过由ado.net显示描述的事务边界使用事务类和方法能提供事务指南.在接下来的章节中,我将把重点放在事务指南上.

自动事务也是可行的,为了使用类来参与事务来协调跨多个数据源的改变.在这种情景下事务本身是在外层处理的,比如通过com+ 和 DTC. 需要了解更多自动事务的,可以参照相关自动事务.

注:当没有在你的代码中指定事务行为时,你应该注意数据库事务默认行为.比如,sql Server 默认自动模式,每个事务-Sql 语句或成功或失败.要了解哪种默认行为是希望得到的从你工作的数据源中,能帮你决定你是否显示定义事务,也可以对于你理解你的系统行为更有帮助.

事务相关类总揽

Ado.net 数据提供对象通过Connection, Command, Transaction 类来提供事务功能. 一个典型的事务过程类似以下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.       打开事务通过Connetion.BeginTransaction()

2.       通过设置Command Command.Transaction 属性,在事务中加入语句或存储过程.

3.       依靠提供者,选择使用 Transaction.Save() 或 Transaction.Begin() 来创建savepoint 或内嵌的事务来使能局部回滚.

4.       提交或回滚事务通过使用Transaction.Commit() Transaction.Rollback()

所有的数据提供者提供了同样的基本结构来处理事务,开始连接的事务,加入指令,使用事务物件来提交或回滚.

Sql Server 事务

Sql Server 数据提供对象提供事务的基本功能情况见以下的类和成员:

Class

Member

Function

SqlConnection

BeginTransaction

Open a new transaction.

SqlCommand

Transaction

Enlist the command associated with the object in an open transaction.

SqlTransaction

Save

Create a savepoint to enable a partial rollback.

SqlTransaction

Rollback

Roll back a transaction.

SqlTransaction

Commit

Commit a Transaction

Sql Server 数据提供者( 对于Sql Server 来说,OLE DB provider 也是如此) 不提供在代码中创建内嵌事务的方式, 因此内嵌事务在Sql Server并不真正的被支持.因此这儿只有一种方式来开始一个事务在SqlClient中-使用SqlConnection.BeginTransaction(). 你不能在统一个连接中打开另外一个事务,直到先前的事务被提交或回滚,因此在任何时间每个连接只有一个打开的事务.为了使用局部回滚,使用SqlTransaction.Save().

OLE DB 事务

OLE DB 数据提供者提供事务的基本功能情况见以下的类和成员:

Class

Member

Function

OleDbConnection

BeginTransaction

Open a new transaction.

OleDbCommand

Transaction

Enlist the command associated with the object in an open transaction.

OleDbTransaction

Begin

Create a nested transaction, to enable a partial rollback.

OleDbTransaction

Rollback

Roll back a transaction.

OleDbTransaction

Commit

Commit a Transaction

OLE DB 数据提供者不提供任何的方法来设置savepoints, 相反的有个Begin() 方法在OleDbTransaction物件上.这允许你创建内嵌事务(根据你的数据库)来提供类似的功能.在这种情况下你可以在单个连接中拥有多个事务.但必须记住的是显示的调用提交和回滚.

记住,.NET OLE DB数据提供者的内嵌事务依赖于你的数据库和指定的OLE DB提供者.为了成功实施内嵌事务,其必须被你的数据库和OLE DB 提供者都支持.

Oracle 事务

Oracle 数据提供者提供事务的基本功能情况见以下的类和成员:

Class

Member

Function

OracleConnection

BeginTransaction

Open a new transaction.

OracleCommand

Transaction

Enlist the command associated with the object in an open transaction.

OracleTransaction

Rollback

Roll back a transaction.

OracleTransaction

Commit

Commit a Transaction

Oracle 数据提供者不允许你指定savepoints或内嵌事务.Savepoints Oracle 支持,但是你不能实施它们对于当前的oracle数据提供者版本来说.事务于oracle 来说或者回滚或者提交,局部回滚是不能的.

 

 

在ADO.NET中使用事务保护数据的完整性(1)

在ADO.NET中使用事务保护你数据的完整性 Christa  May 2004 小结: 当修改数据时,事务是维护数据完整性的一个关键特征. 纵览一下事务及其重要性,接下来学习如何在你的应用中使用事务...
  • wildhorseli
  • wildhorseli
  • 2004年06月11日 11:24
  • 1046

在ADO.NET中使用事务保护数据的完整性(5)

 使用Savepoints当使用savepoints, 记住仅仅是回滚savepoints并不是足够的.当局部回滚后事务必须仍被提交.同时,如果你选择实施它们,如何通知用户或处理局部完成事务是非常重要...
  • wildhorseli
  • wildhorseli
  • 2004年06月14日 15:17
  • 888

在ADO.NET中使用事务保护数据的完整性(2)

事务剖析事务最基本上包含两个步骤 – 开始, 然后是提交或回滚. 开始调用定义了事务的边界, 同时调用提交或回滚在定义结束. 在事务边界内, 所有的执行描述被认为是完成任务的一部分, 必须作为成功或失...
  • wildhorseli
  • wildhorseli
  • 2004年06月11日 15:47
  • 814

在ADO.NET中使用事务保护数据的完整性(4)

实施事务既然我们已经看了类和成员,让我们来看一下基本的实施情况.接下来的代码是一个简单的情况,使用事务来保证两个存储过程-一个从表中删除库存,另一个增加库存在另个表中,或同时执行,或失败.using ...
  • wildhorseli
  • wildhorseli
  • 2004年06月14日 15:17
  • 813

确保事务完整性

确保数据完整性 一、认识约束 约束是数据库中保证数据库里表中数据完整性的手段。录入数据库中的数据都有实际的意义,而约束的作用就是保证数据在实际业务中是有意义的,也就是减少脏数据的机会。   1....
  • u012027907
  • u012027907
  • 2013年10月02日 14:40
  • 1673

.NET开发中的事务处理大比拼 之 ADO.NET级别的事务

现在我们对事务的概念和原理都有所了解了,并且作为已经有一些基础的C#开发者,我们已经熟知编写数据库交互程序的一些要点,即:(1)使用SqlConnection类的对象的Open()方法建立与数据库服务...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:13
  • 1245

数据库的三大范式与三大完整性

因为数据库中实体之间的联系其实说穿了是数据,数值之间的联系,而这个关系如何定义就会严格影响到以后我们操作数据的效率和·准确性。 于是有了很多范式,其中三大范式最为重要。 在满足第三范式前必须满足第...
  • langji1234
  • langji1234
  • 2015年04月15日 19:23
  • 1278

软件的完整性保护问题

软件的完整性保护问题不仅是个老话题,也是当前的一个重要而未解决的问题. “重要而未解决”这一断言是以目前计算机网络病毒,恶意代码,流氓软件,木马程序肆虐横行的现实情况来佐证的.  的确,许多这一类的攻...
  • wenbomao
  • wenbomao
  • 2008年07月29日 00:46
  • 5063

mysql 如何保证数据完整性 -- 笔记

mysql 约束和索引  相同点: 保证证数据的完整性 区别: 索引是从数据结构的角度来保证数据完整性, 而 约束是一个逻辑概念,用来保证数据完整性. 保证数据完整性的方法: 一. 对错误数据...
  • lyfjx8701
  • lyfjx8701
  • 2013年09月29日 10:46
  • 640

HTTP+ 加密 + 认证 + 完整性保护 =HTTPS

早上起来看了会书,虽然一遍可能不会完全学会,但是还是希望能学多少学多少,  1.HTTP+ 加密 + 认证 + 完整性保护 =HTTPS  如果在 HTTP 协议通信过程中使用未经加密的明文,比如...
  • qq_33413264
  • qq_33413264
  • 2017年06月13日 10:14
  • 446
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ADO.NET中使用事务保护数据的完整性(3)
举报原因:
原因补充:

(最多只允许输入30个字)