自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概括VB.NET使用OracleTransaction

開(kāi)發(fā) 后端
這里介紹VB.NET使用OracleTransaction類的一個(gè)對(duì)象來(lái)表示一個(gè)事務(wù)。OracleTransaction類包含多個(gè)屬性,其中的兩個(gè)為Connection和IsolationLevel。

經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)VB.NET使用OracleTransaction,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。數(shù)據(jù)庫(kù)事務(wù)是由一組SQL語(yǔ)句組成的一個(gè)邏輯工作單元。您可以把事務(wù)看作是一組不可分的SQL語(yǔ)句,這些語(yǔ)句作為一個(gè)整體***記錄在數(shù)據(jù)庫(kù)中或一并撤銷。比如在銀行帳戶之間轉(zhuǎn)移資金:一條UPDATE語(yǔ)句將從一個(gè)帳戶的資金總數(shù)中減去一部分,另一條UPDATE語(yǔ)句將把資金加到另一個(gè)帳戶中。減操作和加操作必須***記錄在數(shù)據(jù)庫(kù)中,或者必須一并撤銷—否則將損失資金。這個(gè)簡(jiǎn)單的示例僅使用了兩條UPDATE語(yǔ)句,但一個(gè)更實(shí)際的事務(wù)可能包含許多INSERT、UPDATE和DELETE語(yǔ)句。

要***記錄一個(gè)事務(wù)中的SQL語(yǔ)句的結(jié)果,您可以通過(guò)COMMIT語(yǔ)句來(lái)執(zhí)行提交。要撤銷SQL語(yǔ)句的結(jié)果,您可以使用ROLLBACK語(yǔ)句來(lái)執(zhí)行回滾,這會(huì)把所有的行重設(shè)為它們?cè)瓉?lái)的狀態(tài)。只要您事先沒(méi)有與數(shù)據(jù)庫(kù)斷開(kāi),則您在執(zhí)行回滾之前所做的任何修改都將被撤銷。您還可以設(shè)置一個(gè)保存點(diǎn),以便將事務(wù)回滾至該特定的點(diǎn),同時(shí)保持事務(wù)中的其他語(yǔ)句原封不動(dòng)。

使用數(shù)據(jù)庫(kù)事務(wù)(主要針對(duì)VB.NET)

您可以VB.NET使用OracleTransaction類的一個(gè)對(duì)象來(lái)表示一個(gè)事務(wù)。OracleTransaction類包含多個(gè)屬性,其中的兩個(gè)為Connection(指定與事務(wù)關(guān)聯(lián)的數(shù)據(jù)庫(kù)連接)和IsolationLevel(指定事務(wù)隔離級(jí)別)

Connection,指定與該事務(wù)關(guān)聯(lián)的OracleConnection對(duì)象;
IsolationLevel,指定該事務(wù)的IsolationLevel;
枚舉類型,用于對(duì)事物的鎖定,取值有Chaos、ReadCommited、ReadUncommited、RepeatableRead、Serializable、Unspecified。

應(yīng)用程序通過(guò)針對(duì)OracleConnection對(duì)象調(diào)用BeginTransaction來(lái)創(chuàng)建OracleTransaction對(duì)象。對(duì)OracleTransaction對(duì)象執(zhí)行與該事務(wù)關(guān)聯(lián)的所有后續(xù)操作(例如提交或中止該事務(wù))。
Commit:提交SQL數(shù)據(jù)庫(kù)事務(wù);
Rollback:從掛起狀態(tài)回滾事務(wù);
您還可以使用Save()在事務(wù)中設(shè)置一個(gè)保存點(diǎn)。

下面的示例創(chuàng)建一個(gè)OracleConnection和一個(gè)OracleTransaction。它還演示了如何使用BeginTransaction、Commit和Rollback方法。(這是MSDN里的范例)需要注意的是,這些操作需要引入命名空間:Oracle.DataAcess.ClientOracle.DataAccess.Client命名空間是ODP.NET的一部分,它包含許多類,其中有OracleConnection、OracleCommand和OracleTransaction。示例程序就用到了這些類。

事務(wù)操作

  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 程序中設(shè)置事務(wù)保存點(diǎn)

正如本文前面所提到的那樣,您可以設(shè)置一個(gè)保存點(diǎn),以便將事務(wù)回滾至該特定的點(diǎn),同時(shí)保持事務(wù)中的其他語(yǔ)句原封不動(dòng)。您可以使用 OracleTransaction 類的 Save() 方法在事務(wù)中設(shè)置保存點(diǎn)。

如果您有一個(gè)非常長(zhǎng)的事務(wù)并且希望能夠僅回滾到某個(gè)特定的時(shí)間點(diǎn),那么您可能要使用保存點(diǎn)。例如,您可能想對(duì) 10 個(gè)產(chǎn)品做一些更改,然后設(shè)置一個(gè)保存點(diǎn),然后再對(duì)另 10 個(gè)產(chǎn)品做更改;如果您在進(jìn)行第二批更改時(shí)出現(xiàn)了錯(cuò)誤,那么您可以回滾至保存點(diǎn),使您的***批更改原封不動(dòng)。

VB.NET使用OracleTransaction對(duì)象需要注意的幾點(diǎn):

1)你需要在你整個(gè)事務(wù)執(zhí)行中只能有***OracleConnection ,OracleCommand,OracleTransaction,也就是說(shuō)如果你事務(wù)處理過(guò)程中如果需要與數(shù)據(jù)庫(kù)的操作都只能在這***的Command中執(zhí)行,類似于:

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

若你新建一個(gè)連接執(zhí)行其他數(shù)據(jù)庫(kù)操作的話,整個(gè)事務(wù)過(guò)程就會(huì)拋出異常

2)如果你需要在你SQL語(yǔ)句中加入?yún)?shù),則你必須在你執(zhí)行完提交或相關(guān)數(shù)據(jù)庫(kù)操作之后將其Command的參數(shù)清空。

【編輯推薦】

  1. 詳談VB.NET編碼規(guī)范經(jīng)驗(yàn)
  2. 描述VB.NET工程轉(zhuǎn)換成步驟
  3. 講述C#與VB.NET間移植的技巧
  4. 分享個(gè)人總結(jié)VB.NET多線程
  5. 剖析VB.NET TextBox控件
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-12 16:51:28

VB.NET使用Ora

2009-10-13 14:50:59

VB.NET Envi

2009-10-14 14:04:29

VB.NET創(chuàng)建Web

2009-10-14 10:19:57

VB.NET Doma

2009-10-15 17:50:48

VB.NET Spli

2009-10-28 10:51:32

VB.NET默認(rèn)屬性

2009-10-14 13:15:09

VB.NET數(shù)據(jù)綁定

2009-11-03 10:00:20

VB.NET New方

2009-10-14 15:34:29

VB.NET窗體編程模

2009-10-14 16:46:25

VB.NET OnSt

2009-10-21 10:05:30

VB.NET運(yùn)行環(huán)境

2009-10-23 14:06:07

VB.NET類對(duì)象

2009-10-27 11:32:42

VB.NET Disp

2009-11-03 10:51:33

VB.NET共享

2009-11-02 17:49:05

VB.NET抽象類

2009-10-29 16:23:42

VB.NET實(shí)現(xiàn)IEn

2009-11-02 09:21:04

VB.NET文件系統(tǒng)

2009-10-28 14:44:43

VB.NET Name

2009-10-29 10:21:46

VB.NET變量適用范
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)