讲述VB.NET使用OracleTransaction对象

开发 后端
这里讲述VB.NET使用OracleTransaction对象,OracleTransaction 类包含多个属性,其中的两个为 Connection和IsolationLevel。

在向大家详细介绍VB.NET使用OracleTransaction对象之前,首先让大家了解下数据库事务是什么和使用数据库事务。

数据库事务是由一组 SQL 语句组成的一个逻辑工作单元。您可以把事务看作是一组不可分的 SQL 语句,这些语句作为一个整体***记录在数据库中或一并撤销。比如在银行帐户之间转移资金:一条 UPDATE语句将从一个帐户的资金总数中减去一部分,另一条 UPDATE语句将把资金加到另一个帐户中。减操作和加操作必须***记录在数据库中,或者必须一并撤销 — 否则将损失资金。这个简单的示例仅使用了两条 UPDATE 语句,但一个更实际的事务可能包含许多 INSERT、UPDATE和 DELETE 语句。

要***记录一个事务中的 SQL 语句的结果,您可以通过 COMMIT 语句来执行提交。要撤销 SQL 语句的结果,您可以使用 ROLLBACK 语句来执行回滚,这会把所有的行重设为它们原来的状态。只要您事先没有与数据库断开,则您在执行回滚之前所做的任何修改都将被撤销。您还可以设置一个保存点,以便将事务回滚至该特定的点,同时保持事务中的其他语句原封不动。

使用数据库事务(主要针对VB.net)

VB.NET使用OracleTransaction对象来表示一个事务。OracleTransaction 类包含多个属性,其中的两个为 Connection(指定与事务关联的数据库连接)和 IsolationLevel(指定事务隔离级别)

Connection,指定与该事务关联的OracleConnection对象;
IsolationLevel,指定该事务的IsolationLevel;枚举类型,用于对事物的锁定,取值有Chaos、 ReadCommited、ReadUncommited、RepeatableRead、Serializable、Unspecified。

应用程序通过针对OracleConnection对象调用 BeginTransaction 来创建OracleTransaction对象。对OracleTransaction对象执行与该事务关联的所有后续操作(例如提交或中止该事务)。

Commit:提交SQL数据库事务;
Rollback :从挂起状态回滚事务;

您还可以使用 Save() 在事务中设置一个保存点。

下面的示例创建一个 OracleConnection 和一个 OracleTransaction。它还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。(这是MSDN里的范例)

需要注意的是,这些操作需要引入命名空间: Oracle.DataAcess.Client

Oracle.DataAccess.Client 命名空间是 ODP.NET 的一部分,它包含许多类,其中有 OracleConnection、OracleCommand 和 OracleTransaction。示例程序就用到了这些类。

事务操作

  1. Public Sub RunOracleTransaction()Sub RunOracleTransaction(myConnString As String)  
  2. Dim myConnection As New OracleConnection(myConnString)  
  3. myConnection.Open()  
  4.  
  5. Dim myCommand As OracleCommand = myConnection.CreateCommand()  
  6. Dim myTrans As OracleTransaction  
  7.  
  8. ' Start a local transaction  
  9. myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)  
  10. ' Assign transaction object for a pending local transaction  
  11. myCommand.Transaction = myTrans 
  12.  
  13. Try  
  14. myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')" 
  15. myCommand.ExecuteNonQuery()  
  16. myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')" 
  17. myCommand.ExecuteNonQuery()  
  18. myTrans.Commit()  
  19. Console.WriteLine("Both records are written to database.")  
  20. Catch e As Exception  
  21. myTrans.Rollback()  
  22. Console.WriteLine(e.ToString())  
  23. Console.WriteLine("Neither record was written to database.")  
  24. Finally  
  25. myConnection.Close()  
  26. End Try  
  27. End Sub 

在 .NET 程序中设置事务保存点

正如本文前面所提到的那样,您可以设置一个保存点,以便将事务回滚至该特定的点,同时保持事务中的其他语句原封不动。您可以VB.NET使用OracleTransaction对象的 Save() 方法在事务中设置保存点。

如果您有一个非常长的事务并且希望能够仅回滚到某个特定的时间点,那么您可能要使用保存点。例如,您可能想对 10 个产品做一些更改,然后设置一个保存点,然后再对另 10 个产品做更改;如果您在进行第二批更改时出现了错误,那么您可以回滚至保存点,使您的***批更改原封不动。

【编辑推荐】

  1. 浅谈VB.NET线程构造器
  2. 简单分析VB.NET使用线程
  3. VB.NET List(T)编写框架方法
  4. 简单介绍VB.NET线程同步
  5. VB.NET声明API详细描述
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-12 16:51:28

VB.NET使用Ora

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-14 17:08:44

VB.NET使用Fil

2009-10-13 17:03:55

VB.NET面向对象

2009-10-16 13:26:53

VB.NET Exce

2009-10-21 10:45:50

VB.NET Quic

2009-10-26 19:22:29

VB.NET使用Log

2009-11-02 15:45:03

VB.NET IEnu

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-19 08:55:22

VB.NET多重继承

2009-10-15 11:11:08

VB.NET Text

2009-10-23 13:22:25

VB.NET实现拖动图

2009-10-15 16:39:00

VB.NET读取INI

2009-10-14 11:15:06

VB.NET Grou

2009-10-10 16:44:52

VB.NET开发控件

2009-10-27 11:39:03

VB.NET事件处理程

2009-10-29 09:57:16

VB.NET实现数据绑

2009-10-26 18:11:47

VB.NET调用Exc

2009-10-21 18:28:48

VB.NET表间拖放

2009-10-22 09:20:46

VB.NET Proc
点赞
收藏

51CTO技术栈公众号