成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET事務處理簡單方法推薦

開發 后端
我們今天將會掌握的VB.NET事務處理實現方法是通過OracleTransaction的使用來實現的。大家可以以此文為參考,自己實踐一番。

VB.NET事務處理的操作方法可以有很多種,我們曾經也為大家介紹過一些實用的方法,那么今天將會給大家帶來的是通過OracleTransaction來實現的VB.NET事務處理相關操作,希望可以對大家有所幫助。#t#

有關數據庫事務是由一組 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里的范例)

需要注意的是,這些VB.NET事務處理操作需要引入命名空間: Oracle.DataAcess.Client

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

VB.NET事務處理的事務操作

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

在 .NET 程序中設置事務保存點

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

如果您有一個非常長的事務并且希望能夠僅回滾到某個特定的時間點,那么您可能要使用保存點。例如,您可能想對 10 個產品做一些更改,然后設置一個保存點,然后再對另 10 個產品做更改;如果您在進行第二批更改時出現了錯誤,那么您可以回滾至保存點,使您的第一批更改原封不動。

使用OracleTransaction對象進行VB.NET事務處理需要注意的幾點:

1)你需要在你整個事務執行中只能有唯一OracleConnection ,OracleCommand,OracleTransaction,也就是說如果你事務處理過程中如果需要與數據庫的操作都只能在這唯一的Command中執行,類似于:

imgCommand.CommandText = sSQL

imgCommand.ExecuteNonQuery()或其他操作

若你新建一個連接執行其他數據庫操作的話,整個事務過程就會拋出異常

2)如果你需要在你SQL語句中加入參數,則你必須在你執行完提交或相關數據庫操作之后將其Command的參數清空,下邊舉一個實際的項目里的事務函數:

事務函數

  1. ''' < summary> ''' 
    保存熱點文本文件信息到數據庫 '''  
  2. < /summary>   
  3. Private Function SaveTextFile()  
  4. Function SaveTextFile() As Boolean   
  5. Dim sSQl As String sSQl = "select 
    type_id from sys_file_type where
     file_extname='TXT'"
       
  6. Try imgCommand.CommandText = sSQl   
  7. Dim typeID As Int32 = Convert.
    ToInt32(imgCommand.ExecuteScalar())   
  8. '文件類型 '讀取文本信息   
  9. Dim Textblob() As Byte = GetText()   
  10. sSQl = "insert   
  11. into t_watch_textcontent
    (image_id,text_content,type_id)  
  12. values(:imageid,:textcontent,:typeid)"   
  13. '增添SQL參數 Dim Param As 
    OracleClient.OracleParameter  
  14. Param = New OracleClient.
    OracleParameter("imageid", sNewImageID)   
  15. imgCommand.Parameters.Add(Param)   
  16. Param = New OracleClient.
    OracleParameter("textcontent", Textblob)   
  17. imgCommand.Parameters.Add(Param)   
  18. Param = New OracleClient.
    OracleParameter("typeid", typeID)   
  19. imgCommand.Parameters.Add(Param)   
  20. '提交信息 imgCommand.CommandText = sSQl   
  21. If imgCommand.ExecuteNonQuery() > 0   
  22. Then bResult = True   
  23. '關鍵是這里,需要你手動清除參數   
  24. imgCommand.Parameters.Clear()   
  25. End If   
  26. Catch ex As Exception 
    Me.ExceptionMessage = ex   
  27. bResult = False   
  28. End   
  29. Try Return bResult   
  30. End Function  

VB.NET事務處理的相關操作方法就為大家介紹到這里。

責任編輯:曹凱 來源: IT168
相關推薦

2010-01-07 18:05:18

VB.NET事務處理

2010-01-11 17:12:12

VB.NET事務處理

2010-01-04 13:06:50

ADO.NET事務

2009-11-04 15:05:45

ADO.NET事務

2009-11-13 17:01:07

ADO.NET事務處理

2009-07-15 17:41:55

iBATIS事務處理

2009-10-26 09:11:52

VB.NET基礎教程

2009-10-14 16:46:25

VB.NET OnSt

2011-04-27 15:55:16

2010-01-21 17:58:40

VB.NET List

2010-01-20 18:57:20

VB.NET調用CHM

2009-09-14 19:55:03

LINQ事務處理

2009-07-09 18:15:42

JDBC事務處理

2009-10-16 13:26:53

VB.NET Exce

2009-11-11 09:31:44

ADO.NET事務處理

2010-01-13 15:12:04

VB.NET字符串合并

2010-01-14 15:15:22

VB.NET數據行處理

2010-04-13 15:44:00

Oracle與SqlS

2014-01-22 13:37:53

2009-10-13 09:33:49

VB.NET Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 四虎午夜剧场 | 国产免费av在线 | 国产精品美女久久久久久久网站 | 在线免费观看欧美 | 日本人爽p大片免费看 | 欧美三级成人理伦 | 黄a大片| 国产成人在线一区二区 | 成人av播放| 日韩视频一区在线观看 | 91看片在线观看 | 色吧综合网 | 人人澡视频 | 久久久精彩视频 | 毛片免费在线 | 午夜影视大全 | 在线成人免费av | 91精品久久久久久久久久 | www日日日| 成人精品毛片国产亚洲av十九禁 | av激情影院 | 美国十次成人欧美色导视频 | 成人性视频免费网站 | 午夜资源| 日本不卡免费新一二三区 | 欧美一级欧美三级在线观看 | 欧美成人精品 | 久久国产欧美日韩精品 | 99re在线视频 | gav成人免费播放视频 | 久久久久国产精品免费免费搜索 | 国产精品久久久久久久久大全 | 国产一在线观看 | 欧美日韩亚洲三区 | 国产在线精品一区二区 | 521av网站| 91av视频在线观看 | 成人毛片一区二区三区 | 成人精品一区二区 | 超碰超碰 | 国产精品美女www |