版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 所需軟件</b></p><p> 如果您要跟隨我們逐步完成本文中給出的示例,那么您需要安裝以下軟件:</p><p> Windows NT 4.0、Windows 2000、Windows XP Professional 或 Windows Server 2003;</p><p> 能夠訪問一個已安裝的
2、 Oracle 數(shù)據(jù)庫(Oracle8i 版本 3 8.1.7 或更高版本);</p><p> Oracle 客戶機(版本 10.1.0.2.0 或更高版本);</p><p> Oracle Net(版本 10.1.0.2.0 或更高版本);</p><p> Oracle Data Providers for .NET(版本 10.1.0.2.0 或更高
3、版本);</p><p> Microsoft .NET Framework(版本 1.0 或更高版本);</p><p> Microsoft .NET 框架 SDK(版本 1.0 或更高版本);</p><p> 如果您打算使用企業(yè)服務事務或分布式事務來開發(fā)和運行應用程序,那么您還需要安裝 Oracle Services for Microsoft Tra
4、nsaction Server(10.1.0.2.0 或更高版本)。</p><p> 您需要分別下載和安裝 .NET 框架以及 SDK(先安裝框架)。您還需要下載和安裝 Oracle 數(shù)據(jù)庫 10g,它包括 Oracle Data Provider for .NET (ODP.NET)。您可以選擇在不同計算機或同一計算機上安裝 ODP.NET 和數(shù)據(jù)庫服務器。</p><p> 注意
5、:ODP.NET 驅動程序針對 Oracle 數(shù)據(jù)庫訪問進行了優(yōu)化,因此可以獲得最佳性能,并且它們還支持 Oracle 數(shù)據(jù)庫的豐富特性,如 BFILE、BLOB、CLOB、XMLType 等。如果您正在開發(fā)基于 Oracle 數(shù)據(jù)庫的 .NET 應用程序,那么就特性和性能來講,ODP.NET 無疑是最佳的選擇。</p><p><b> 數(shù)據(jù)庫模式設置</b></p>&l
6、t;p> 首先,您需要設置數(shù)據(jù)庫模式,在此我們使用一個簡化的 Web 商店示例。您必須首先創(chuàng)建一個名為 store 的用戶并按以下方式將所需的權限授予該用戶(您必須首先以擁有 CREATE USER 權限的用戶身份登錄數(shù)據(jù)庫才能創(chuàng)建用戶):</p><p> 注意:您會在源代碼文件 db1.sql 中找到前兩個語句和該部分中出現(xiàn)的設置 store 模式的其他語句。</p><p>
7、; 接下的語句以 store 用戶身份進行連接:</p><p> 以下語句創(chuàng)建了所需的兩個數(shù)據(jù)庫表,名稱分別為 product_types 和 products:</p><p> 注意:如果您在一個不同的模式中為 store 用戶創(chuàng)建了這些數(shù)據(jù)庫表,那么您將需要修改示例配置文件(您稍后將看到)中的模式名稱。表 product_types 用于存儲示例在線商店可能庫存的產(chǎn)品類型的名
8、稱,表 products 包含了所銷售產(chǎn)品的詳細信息。</p><p> 下面的 INSERT 語句為表 product_types 和 products 添加行:</p><p> 接下來,您將了解有關數(shù)據(jù)庫事務的內容。</p><p><b> 數(shù)據(jù)庫事務簡介</b></p><p> 數(shù)據(jù)庫事務是由一組 S
9、QL 語句組成的一個邏輯工作單元。您可以把事務看作是一組不可分的 SQL 語句,這些語句作為一個整體永久記錄在數(shù)據(jù)庫中或一并撤銷。比如在銀行帳戶之間轉移資金:一條 UPDATE 語句將從一個帳戶的資金總數(shù)中減去一部分,另一條 UPDATE 語句將把資金加到另一個帳戶中。減操作和加操作必須永久記錄在數(shù)據(jù)庫中,或者必須一并撤銷 ― 否則將損失資金。這個簡單的示例僅使用了兩條 UPDATE 語句,但一個更實際的事務可能包含許多 INSERT、
10、UPDATE 和 DELETE 語句。</p><p> 要永久記錄一個事務中的 SQL 語句的結果,您可以通過 COMMIT 語句來執(zhí)行提交。要撤銷 SQL 語句的結果,您可以使用 ROLLBACK 語句來執(zhí)行回滾,這會把所有的行重設為它們原來的狀態(tài)。只要您事先沒有與數(shù)據(jù)庫斷開,則您在執(zhí)行回滾之前所做的任何修改都將被撤銷。您還可以設置一個保存點,以便將事務回滾至該特定的點,同時保持事務中的其他語句原封不動。&
11、lt;/p><p> 在 C# 和 VB.NET 中使用數(shù)據(jù)庫事務</p><p> 您可以使用 OracleTransaction 類的一個對象來表示一個事務。OracleTransaction 類包含多個屬性,其中的兩個為 Connection(指定與事務關聯(lián)的數(shù)據(jù)庫連接)和 IsolationLevel(指定事務隔離級別);本文稍后將向您介紹更多有關事務隔離級別的內容。</p&
12、gt;<p> OracleTransaction 類包含許多操控事務的方法。您可以使用 Commit() 方法永久提交 SQL 語句,并可以使用 Rollback() 撤銷這些語句。您還可以使用 Save() 在事務中設置一個保存點。</p><p> 我現(xiàn)在將帶著您逐步完成兩個示例程序 ― 一個用 C# 編寫 (TransExample1.cs),另一個用 VB.NET 編寫 (TransE
13、xample1.vb)。這些程序演示了如何執(zhí)行一個包含了兩條 INSERT 語句的事務。第一條 INSERT 語句將在表 product_types 中添加一行,第二條將在表 products 中添加一行。</p><p><b> 導入命名空間</b></p><p> 以下 C# 程序語句指定在程序中使用 System 和 Oracle.DataAcess.C
14、lient 命名空間:</p><p> 下面是等價的 VB.NET 語句:</p><p> Oracle.DataAccess.Client 命名空間是 ODP.NET 的一部分,它包含許多類,其中有OracleConnection、OracleCommand 和 OracleTransaction。示例程序用到了這些類。</p><p><b>
15、 第 1 步</b></p><p> 創(chuàng)建一個 OracleConnection 對象連接到 Oracle 數(shù)據(jù)庫,然后打開該連接。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p> User Id 和 Password 屬性指定了您所要
16、連接到的模式的數(shù)據(jù)庫用戶和口令。Data Source 屬性指定了數(shù)據(jù)庫的 Oracle Net 服務名稱;初始數(shù)據(jù)庫的默認服務名稱為 ORCL。如果您使用的不是初始數(shù)據(jù)庫,或者您的服務名稱不同,那么您需要在程序中修改 Data Source 屬性的設置。</p><p><b> 第 2 步</b></p><p> 創(chuàng)建一個 OracleTransaction
17、 對象,然后調用 OracleConnection 對象的 BeginTransaction() 方法啟動事務。</p><p><b> 在 C# 中:</b></p><p><b> 第 3 步</b></p><p> 創(chuàng)建一個 OracleCommand 對象,用于存儲 SQL 語句。</p>
18、<p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p> 因為 OracleCommand 對象使用 OracleConnection 對象的 CreateCommand() 方法創(chuàng)建的,所以它自動使用在第 2 步中為 OracleConnection 對象設置的事務。</p><p&g
19、t;<b> 第 4 步</b></p><p> 將 OracleCommand 對象的 CommandText 屬性設為向表 product_types 中添加一行的第一條 INSERT 語句。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p>&
20、lt;p><b> 第 5 步</b></p><p> 使用 OracleCommand 對象的 ExecuteNonQuery() 方法運行 INSERT 語句。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p> 第 6
21、 和第 7 步</p><p> 將 OracleCommand 對象的 CommandText 屬性設為向表 Products 中添加一行的第二條 INSERT 語句,并運行它。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p><b> 第
22、8 步</b></p><p> 使用 OracleTransaction 對象的 Commit() 方法提交數(shù)據(jù)庫中的事務。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p> 在完成 Commit() 方法之后,由 INSERT 語句添加的
23、兩行將在數(shù)據(jù)庫中永久記錄。</p><p><b> 第 9 步</b></p><p> 使用 Close() 方法關閉 OracleConnection 對象。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p&
24、gt;<b> 編譯并運行示例程序</b></p><p> 要編譯 C# 示例程序,您可以使用 csc 命令運行 C# 編譯器。因為程序使用 Oracle Data Access DLL,所以您應使用 /r 選項指定該 DLL 的完整路徑,例如:</p><p> 注意:您需要用您計算機上的相應路徑來替換該 DLL 的路徑。此外,如果您的計算機找不到 csc
25、編譯器,那么您可能需要運行 Microsoft sdkvars.bat 腳本來首先設置 .NET SDK 的環(huán)境變量;您可以在安裝 .NET SDK 的 bin 目錄中找到該腳本。</p><p> 如果您遇到以下錯誤:</p><p> 這說明您沒有在編譯命令中正確指定 Oracle Data Access DLL。(有關設置的信息,請參閱 John Paul Cook 的技術文章“
26、在 Oracle 數(shù)據(jù)庫上構建 .NET 應用程序”。)</p><p> 下面是用于編譯 VB.NET 程序的等價命令:</p><p> 接下來,輸入以下命令,運行示例:</p><p> 您將看到程序的輸出。不過,如果您遇到類似以下的異常:</p><p> 這說明 OracleConnection 對象的連接字符串中的 Dat
27、a Source 的設置不正確。您應當咨詢您的 DBA 或查閱 Oracle Net 文檔以獲得更多詳細信息。</p><p> 如果您使用的是 VS .NET,那么您可以遵循以下指示來編譯和運行 C# 程序 TransExample1.cs:</p><p> 創(chuàng)建一個新的 C# 控制臺應用程序。File>New Project,然后選擇 Visual C# Projects,
28、Console Application。</p><p> 將項目命名為 TransExample1。用 TransExample1.cs 中的代碼替換 VS .NET 生成的所有代碼。選擇 Project>Add Reference 添加對 Oracle.DataAccess.dll 的引用,然后瀏覽至您安裝 ODP.NET 的目錄(在我的計算機上,它是 C:\oracle\product\10.1.0
29、\Client_1\bin\Oracle.DataAccess.dll),然后雙擊 Oracle.DataAccess.dll。</p><p> 選擇 Debug>Start without Debugging 運行該程序。要編譯和運行 TransExample1.vb,您可以執(zhí)行類似的一系列步驟,但第 1 步應選擇一個 Visual Basic 控制臺應用程序,并在第 3 步用 TransExampl
30、e1.vb 中的代碼替換生成的代碼。</p><p><b> 查看程序的運行結果</b></p><p> 當您運行完 C# 或 VB .NET 程序時,您可以在 SQL*Plus 中使用以下 SELECT 語句查看事務的結果:</p><p><b> 您將看到以下結果:</b></p><p
31、> 接下來,您將了解如何設置事務保存點。</p><p> 在 .NET 程序中設置事務保存點</p><p> 正如本文前面所提到的那樣,您可以設置一個保存點,以便將事務回滾至該特定的點,同時保持事務中的其他語句原封不動。您可以使用 OracleTransaction 類的 Save() 方法在事務中設置保存點。</p><p> 如果您有一個非常長
32、的事務并且希望能夠僅回滾到某個特定的時間點,那么您可能要使用保存點。例如,您可能想對 10 個產(chǎn)品做一些更改,然后設置一個保存點,然后再對另 10 個產(chǎn)品做更改;如果您在進行第二批更改時出現(xiàn)了錯誤,那么您可以回滾至保存點,使您的第一批更改原封不動。</p><p> 我將帶您逐步完成演示如何使用保存點的 C# (TransExample2.cs) 示例程序和 VB.NET (TransExample2.vb)
33、示例程序中的相關新步驟。這些程序向表 products 中添加一行,設置一個保存點,向表 products 中添加另一行,回滾至保存點,然后從表 products 中讀取這些行。在回滾至保存點后,只有添加到表 products 中的第一行保留了下來:第二行將已被刪除。</p><p> 第 1 到第 3 步與“在 C# 和 VB.NET 中使用數(shù)據(jù)庫事務”部分中所示的步驟相同,因此在這里將其省略。</p&
34、gt;<p><b> 第 4 步</b></p><p> 向表 products 中添加一行,該行的產(chǎn)品 ID 為 6。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p><b> 第 5 步</b
35、></p><p> 使用 OracleTransaction 的 Save() 方法設置一個名為 SaveProduct 的保存點。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p><b> 第 6 步</b></p&
36、gt;<p> 向表 products 中添加另一行,該行的產(chǎn)品 ID 為 7。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p><b> 第 7 步</b></p><p> 回滾到先前在第 5 步中設置的 Sav
37、eProduct 保存點。</p><p><b> 在 C# 中:</b></p><p> 在 VB.NET 中:</p><p> 完成回滾后,在第 6 步中添加的第二行已被刪除,而在第 4 步中添加的第一行保留了下來。</p><p> TransExample2.cs 和 TransExample2.v
38、b 中剩下的步驟顯示表 products 的內容,回滾整個事務并從數(shù)據(jù)庫斷開。</p><p> 用于 Microsoft Transaction Server 的 Oracle 事務服務的快速說明。Microsoft Transaction Server 是一個運行在互聯(lián)網(wǎng)或網(wǎng)絡服務器上的專有事務處理系統(tǒng)。Microsoft Transaction Server 為客戶端計算機部署和管理應用程序和數(shù)據(jù)庫事務請
39、求。</p><p> Microsoft Transaction Server 是以服務器為中心的三層體系結構模型的一個組件。這種方法實現(xiàn)了將應用程序的表示、業(yè)務邏輯和數(shù)據(jù)元素清晰地分布到在一個網(wǎng)絡中連接的不同計算機上。無需專門集成,您就可以在與 Oracle 數(shù)據(jù)庫服務器 8.0.6 版或更高版本連接的 Microsoft Transaction Server 中部署一個組件,但首先您必須安裝 Oracle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- oracle數(shù)據(jù)庫游標使用大全
- oracle 數(shù)據(jù)庫游標使用大全
- oracle如何配置邏輯備用數(shù)據(jù)庫
- 使用shell處理oracle數(shù)據(jù)庫alert日志
- !oracle數(shù)據(jù)庫設計
- oracle數(shù)據(jù)庫合同
- oracle數(shù)據(jù)庫試題
- oracle數(shù)據(jù)庫復習
- !oracle數(shù)據(jù)庫設計
- oracle數(shù)據(jù)庫中序列用法講解
- oracle數(shù)據(jù)庫巡檢報告
- oracle云數(shù)據(jù)庫方案
- oracle數(shù)據(jù)庫遷移方案
- oracle數(shù)據(jù)庫遷移方案
- oracle數(shù)據(jù)庫遷移方案
- oracle數(shù)據(jù)庫巡檢方案
- oracle數(shù)據(jù)庫巡檢內容
- oracle數(shù)據(jù)庫開發(fā)規(guī)范
- oracle數(shù)據(jù)庫巡檢方案
- oracle數(shù)據(jù)庫巡檢內容
評論
0/150
提交評論