这里介绍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.ClientOracle.DataAccess.Client命名空间是ODP.NET的一部分,它包括许多类,其间有OracleConnection、OracleCommand和OracleTransaction。示例程序就用到了这些类。
业务操作
- PublicSubRunOracleTransaction()SubRunOracleTransaction(myConnStringAsString)
- DimmyConnectionAsNewOracleConnection(myConnString)
- myConnection.Open()
- DimmyCommandAsOracleCommand=myConnection.CreateCommand()
- DimmyTransAsOracleTransaction
- 'Startalocaltransaction
- myTrans=myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
- 'Assigntransactionobjectforapendinglocaltransaction
- myCommand.Transaction=myTrans
- Try
- myCommand.CommandText="INSERTINTODept(DeptNo,Dname,Loc)values(50,'TECHNOLOGY','DENVER')"
- myCommand.ExecuteNonQuery()
- myCommand.CommandText="INSERTINTODept(DeptNo,Dname,Loc)values(60,'ENGINEERING','KANSASCITY')"
- myCommand.ExecuteNonQuery()
- myTrans.Commit()
- Console.WriteLine("Bothrecordsarewrittentodatabase.")
- CatcheAsException
- myTrans.Rollback()
- Console.WriteLine(e.ToString())
- Console.WriteLine("Neitherrecordwaswrittentodatabase.")
- Finally
- myConnection.Close()
- EndTry
- EndSub
在 .NET 程序中设置业务保存点
正如本文前面所说到的那样,您能够设置一个保存点,以便将业务回滚至该特定的点,一起坚持业务中的其他句子原封不动。您能够运用 OracleTransaction 类的 Save() 办法在业务中设置保存点。
假如您有一个十分长的业务而且期望能够仅回滚到某个特定的时刻点,那么您或许要运用保存点。例如,您或许想对 10 个产品做一些更改,然后设置一个保存点,然后再对另 10 个产品做更改;假如您在进行第二批更改时呈现了过错,那么您能够回滚至保存点,使您的***批更改原封不动。
VB.NET运用OracleTransaction目标需求留意的几点:
1)你需求在你整个业务履行中只能有***OracleConnection ,OracleCommand,OracleTransaction,也就是说假如你业务处理进程中假如需求与数据库的操作都只能在这***的Command中履行,类似于:
- imgCommand.CommandText=sSQL
- imgCommand.ExecuteNonQuery()或其他操作
若你新建一个衔接履行其他数据库操作的话,整个业务进程就会抛出反常
2)假如你需求在你SQL句子中参加参数,则你有必要在你履行完提交或相关数据库操作之后将其Command的参数清空。
【修改引荐】
- 详谈VB.NET编码标准经历
- 描绘VB.NET工程转换成过程
- 叙述C#与VB.NET间移植的技巧
- 共享个人总结VB.NET多线程
- 分析VB.NET TextBox控件