All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ajax和asp.net的配置文件_.net资料_编程技术
Sql,server,2005数据库中的DDL触发器_[SQL,Server教程]
PHP入门:初学来看配置文件PHP.INI的中文注释_php资料_编程技术
ASP.NET从零起步设计网站全过程(9)_[Asp.Net教程]
,2.0,中快速实现单点登陆_[Asp.Net教程]
visual c++中字体类CFont的用法
大型系统上PHP令人不爽的九大原因_php资料_编程技术
利用ASP.NET,2.0的客户端回调功能制作下拉框无限级联动_[Asp.Net教程]
用IHttpModule解决输入中文地址乱码问题(二)_[Asp.Net教程]
C#教程:System.Net.Sockets命名空间使用实例
Reading number is top 10 pictures
这才叫绝色美女1
In the world the most mysterious 21 place landscape4
The money of more than 100 countries and regions16
西班牙山村小景5
联通的3G无线网卡我只用了一天,看看流量......
美丽的桂林风光1
The money of more than 100 countries and regions18
LiXiang early youth photo
泳装名模阿尔贝特妮写真
云南大理的美女
Download software ranking
Eclipse 4.2.2 For Win64
打鸟视频
Visual C++界面编程技术
matrix2
Boxer's Top ten classic battle4
Be there or be square
Unix video tutorial14
终极变速大师Speeder3.26
变速齿轮3.26
双旗镇刀客B
delv published in(发表于) 2014/1/8 7:03:03 Edit(编辑)
VB.NET使用OracleTransaction处理事务_[Asp.Net教程]

VB.NET使用OracleTransaction处理事务_[Asp.Net教程]

VB.NET使用OracleTransaction处理事务_[Asp.Net教程]

数据库事务简介

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

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

  使用数据库事务(主要针对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。示例程序就用到了这些类。

  事务操作


1Public 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
27End Sub
28

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

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

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

  使用OracleTransaction对象需要注意的几点:

  1)你需要在你整个事务执行中只能有唯一OracleConnection ,OracleCommand,OracleTransaction,也就是说如果你事务处理过程中如果需要与数据库的操作都只能在这唯一的Command中执行,类似于:


imgCommand.CommandText = sSQL
imgCommand.ExecuteNonQuery()或其他操作

  若你新建一个连接执行其他数据库操作的话,整个事务过程就会抛出异常

  2)如果你需要在你SQL语句中加入参数,则你必须在你执行完提交或相关数据库操作之后将其Command的参数清空,下边举一个实际的项目里的事务函数:

  事务函数


1 '''
2 ''' 保存热点文本文件信息到数据库
3 '''

4 Private Function SaveTextFile()Function SaveTextFile() As Boolean
5 Dim sSQl As String
6 sSQl = "select type_id from sys_file_type where file_extname='TXT'"
7 Try
8 imgCommand.CommandText = sSQl
9 Dim typeID As Int32 = Convert.ToInt32(imgCommand.ExecuteScalar()) '文件类型
10 '读取文本信息
11 Dim Textblob() As Byte = GetText()
12
13 sSQl = "insert into t_watch_textcontent(image_id,text_content,type_id) values(:imageid,:textcontent,:typeid)"
14 '增添SQL参数
15 Dim Param As OracleClient.OracleParameter
16 Param = New OracleClient.OracleParameter("imageid", sNewImageID)
17 imgCommand.Parameters.Add(Param)
18 Param = New OracleClient.OracleParameter("textcontent", Textblob)
19 imgCommand.Parameters.Add(Param)
20 Param = New OracleClient.OracleParameter("typeid", typeID)
21 imgCommand.Parameters.Add(Param)
22
23 '提交信息
24 imgCommand.CommandText = sSQl
25 If imgCommand.ExecuteNonQuery() > 0 Then
26 bResult = True
27 '关键是这里,需要你手动清除参数
28 imgCommand.Parameters.Clear()
29 End If
30 Catch ex As Exception
31 Me.ExceptionMessage = ex
32 bResult = False
33 End Try
34
35 Return bResult
36 End Function
来源:博客园





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.