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

VB.NET事務(wù)處理簡單方法推薦

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

VB.NET事務(wù)處理的操作方法可以有很多種,我們曾經(jīng)也為大家介紹過一些實用的方法,那么今天將會給大家?guī)淼氖峭ㄟ^OracleTransaction來實現(xiàn)的VB.NET事務(wù)處理相關(guān)操作,希望可以對大家有所幫助。#t#

有關(guān)數(shù)據(jù)庫事務(wù)是由一組 SQL 語句組成的一個邏輯工作單元。您可以把事務(wù)看作是一組不可分的 SQL 語句,這些語句作為一個整體永久記錄在數(shù)據(jù)庫中或一并撤銷。比如在銀行帳戶之間轉(zhuǎn)移資金:一條 UPDATE語句將從一個帳戶的資金總數(shù)中減去一部分,另一條 UPDATE語句將把資金加到另一個帳戶中。減操作和加操作必須永久記錄在數(shù)據(jù)庫中,或者必須一并撤銷 — 否則將損失資金。這個簡單的示例僅使用了兩條 UPDATE 語句,但一個更實際的事務(wù)可能包含許多 INSERT、UPDATE和 DELETE 語句。

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

VB.NET事務(wù)處理中如何使用數(shù)據(jù)庫事務(wù)(主要針對VB.NET)

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

Connection,指定與該事務(wù)關(guān)聯(lián)的OracleConnection對象;

IsolationLevel,指定該事務(wù)的IsolationLevel;枚舉類型,用于對事物的鎖定,取值有Chaos、ReadCommited、ReadUncommited、RepeatableRead、Serializable、Unspecified。

應(yīng)用程序通過針對OracleConnection對象調(diào)用 BeginTransaction 來創(chuàng)建OracleTransaction對象。對OracleTransaction對象執(zhí)行與該事務(wù)關(guān)聯(lián)的所有后續(xù)操作(例如提交或中止該事務(wù))

Commit:提交SQL數(shù)據(jù)庫事務(wù);

Rollback :從掛起狀態(tài)回滾事務(wù);

您還可以使用 Save() 在事務(wù)中設(shè)置一個保存點。

下面的示例創(chuàng)建一個 OracleConnection 和一個 OracleTransaction。它還演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。(這是MSDN里的范例)

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

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

VB.NET事務(wù)處理的事務(wù)操作

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

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

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

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

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

imgCommand.CommandText = sSQL

imgCommand.ExecuteNonQuery()或其他操作

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

2)如果你需要在你SQL語句中加入?yún)?shù),則你必須在你執(zhí)行完提交或相關(guān)數(shù)據(jù)庫操作之后將其Command的參數(shù)清空,下邊舉一個實際的項目里的事務(wù)函數(shù):

事務(wù)函數(shù)

  1. ''' < summary> ''' 
    保存熱點文本文件信息到數(shù)據(jù)庫 '''  
  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參數(shù) 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. '關(guān)鍵是這里,需要你手動清除參數(shù)   
  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事務(wù)處理的相關(guān)操作方法就為大家介紹到這里。

責任編輯:曹凱 來源: IT168
相關(guān)推薦

2010-01-11 17:12:12

VB.NET事務(wù)處理

2010-01-07 18:05:18

VB.NET事務(wù)處理

2010-01-04 13:06:50

ADO.NET事務(wù)

2009-11-04 15:05:45

ADO.NET事務(wù)

2009-11-13 17:01:07

ADO.NET事務(wù)處理

2009-07-15 17:41:55

iBATIS事務(wù)處理

2009-10-26 09:11:52

VB.NET基礎(chǔ)教程

2011-04-27 15:55:16

2009-10-14 16:46:25

VB.NET OnSt

2009-07-09 18:15:42

JDBC事務(wù)處理

2009-09-14 19:55:03

LINQ事務(wù)處理

2009-11-11 09:31:44

ADO.NET事務(wù)處理

2010-01-21 17:58:40

VB.NET List

2010-01-20 18:57:20

VB.NET調(diào)用CHM

2009-10-16 13:26:53

VB.NET Exce

2014-01-22 13:37:53

2010-04-13 15:44:00

Oracle與SqlS

2010-01-14 15:15:22

VB.NET數(shù)據(jù)行處理

2010-01-13 15:12:04

VB.NET字符串合并

2022-06-22 05:42:32

數(shù)據(jù)庫事務(wù)處理分析查詢
點贊
收藏

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