新聞中心
在向大家詳細(xì)介紹VB.NET使用OracleTransaction對(duì)象之前,首先讓大家了解下數(shù)據(jù)庫(kù)事務(wù)是什么和使用數(shù)據(jù)庫(kù)事務(wù)。

新津縣網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
數(shù)據(jù)庫(kù)事務(wù)是由一組 SQL 語(yǔ)句組成的一個(gè)邏輯工作單元。您可以把事務(wù)看作是一組不可分的 SQL 語(yǔ)句,這些語(yǔ)句作為一個(gè)整體***記錄在數(shù)據(jù)庫(kù)中或一并撤銷(xiāo)。比如在銀行帳戶(hù)之間轉(zhuǎn)移資金:一條 UPDATE語(yǔ)句將從一個(gè)帳戶(hù)的資金總數(shù)中減去一部分,另一條 UPDATE語(yǔ)句將把資金加到另一個(gè)帳戶(hù)中。減操作和加操作必須***記錄在數(shù)據(jù)庫(kù)中,或者必須一并撤銷(xiāo) — 否則將損失資金。這個(gè)簡(jiǎn)單的示例僅使用了兩條 UPDATE 語(yǔ)句,但一個(gè)更實(shí)際的事務(wù)可能包含許多 INSERT、UPDATE和 DELETE 語(yǔ)句。
要***記錄一個(gè)事務(wù)中的 SQL 語(yǔ)句的結(jié)果,您可以通過(guò) COMMIT 語(yǔ)句來(lái)執(zhí)行提交。要撤銷(xiāo) SQL 語(yǔ)句的結(jié)果,您可以使用 ROLLBACK 語(yǔ)句來(lái)執(zhí)行回滾,這會(huì)把所有的行重設(shè)為它們?cè)瓉?lái)的狀態(tài)。只要您事先沒(méi)有與數(shù)據(jù)庫(kù)斷開(kāi),則您在執(zhí)行回滾之前所做的任何修改都將被撤銷(xiāo)。您還可以設(shè)置一個(gè)保存點(diǎn),以便將事務(wù)回滾至該特定的點(diǎn),同時(shí)保持事務(wù)中的其他語(yǔ)句原封不動(dòng)。
使用數(shù)據(jù)庫(kù)事務(wù)(主要針對(duì)VB.net)
VB.NET使用OracleTransaction對(duì)象來(lái)表示一個(gè)事務(wù)。OracleTransaction 類(lèi)包含多個(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;枚舉類(lèi)型,用于對(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.Client
Oracle.DataAccess.Client 命名空間是 ODP.NET 的一部分,它包含許多類(lèi),其中有 OracleConnection、OracleCommand 和 OracleTransaction。示例程序就用到了這些類(lèi)。
事務(wù)操作
- Public Sub RunOracleTransaction()Sub RunOracleTransaction(myConnString As String)
- Dim myConnection As New OracleConnection(myConnString)
- myConnection.Open()
- Dim myCommand As OracleCommand = myConnection.CreateCommand()
- Dim myTrans As OracleTransaction
- ' Start a local transaction
- myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
- ' Assign transaction object for a pending local transaction
- myCommand.Transaction = myTrans
- Try
- myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
- myCommand.ExecuteNonQuery()
- myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
- myCommand.ExecuteNonQuery()
- myTrans.Commit()
- Console.WriteLine("Both records are written to database.")
- Catch e As Exception
- myTrans.Rollback()
- Console.WriteLine(e.ToString())
- Console.WriteLine("Neither record was written to database.")
- Finally
- myConnection.Close()
- End Try
- End Sub
在 .NET 程序中設(shè)置事務(wù)保存點(diǎn)
正如本文前面所提到的那樣,您可以設(shè)置一個(gè)保存點(diǎn),以便將事務(wù)回滾至該特定的點(diǎn),同時(shí)保持事務(wù)中的其他語(yǔ)句原封不動(dòng)。您可以VB.NET使用OracleTransaction對(duì)象的 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線(xiàn)程構(gòu)造器
- 簡(jiǎn)單分析VB.NET使用線(xiàn)程
- VB.NET List(T)編寫(xiě)框架方法
- 簡(jiǎn)單介紹VB.NET線(xiàn)程同步
- VB.NET聲明API詳細(xì)描述
文章標(biāo)題:講述VB.NET使用OracleTransaction對(duì)象
網(wǎng)頁(yè)網(wǎng)址:http://fisionsoft.com.cn/article/dhijhde.html


咨詢(xún)
建站咨詢(xún)
