微軟公司把SQL Server提升為
NET應用程序的數據庫
但是
由於Oracle很高的市場占有率
你無疑需要在
NET應用程序中使用Oracle數據
在ADO
NET中
Oracle數據是利用通用的OLE
DB provider來訪問的
但是這在性能上落後於SQL Server的管理提供者(managed provider)
微軟公司認識到了有必要專門為Oracle提供管理者(provider)
因此它發布了
NET Managed Provider For Oracle
讓我們看看如何利用它來訪問數據的
得到你所需要的
在以前
人們常常用
驅動(driver)
這一詞來表示讓應用程序訪問數據庫的工具
現在
在
NET下
人們用
管理提供者(managed provider)
來取代
驅動
一詞
NET Managed Provider For Oracle是對
NET的一個附加
它依賴於Oracle客戶軟件來與Oracle數據庫接口
所以
除了擁有
NET提供者之外
你還需要安裝Oracle客戶軟件
你還需要在Visual Studio
NET中添加對System
Data
OracleClient
dll的引用
為此
你可以在Visual Studio
NET中鼠標右擊References列表或者從菜單欄中選擇Project | Add Reference
你也許還需要在你的應用程序中正確導入System
Data
OracleClient名字空間
訪問數據
NET環境的一大優點就是數據庫訪問代碼通常遵循相同的模式而與後端數據庫無關
首先
你建立一個連接
然後配置SQL語句或者指令
最後
執行SQL(語句或者命令)並處理結果
顯而易見
用來訪問Oracle數據庫的代碼與用來訪問SQL Server的代碼不會有很大的區別
這兩者的對象名字不同
但是過程是相似的
你可以在清單A中的VB
NET代碼中很清楚的看出這一點
清單A如下
Listing A: Accessing Oracle data
Dim oracleConnection As New OracleConnection() Dim oracleCommand As New OracleCommand() Dim oracleReader As OracleDataReader Dim sqlString As String
sqlString =
data source=oracle
server;user id=test;password=test
oracleConnection
ConnectionString = oracleConnection
Open() oracleCommand
CommandText =
SELECT * FROM DBTEST
PEOPLE
oracleCommand
Connection = oracleConnection oracleReader = oracleCommand
ExecuteReader
清單A中的代碼建立一個連接
創建一個命令對象(該對象用來返回PEOPLE表中所有的行)
並用OracleDataReader(它與SqlDataReader和OleDbDataReader對象相似)來讀取數據
如果你用其它
NET環境來處理SQL Server
你會立即注意到你所用到的類的名字與Oracle對應類的名字是相似的
例如
SQL Server連接類命名為SqlConnection
而Oracle連接類命名為OracleConnection
提防錯誤
在所有的
NET開發中
你都應該密切監視例外的產生以確保在訪問數據時代碼執行無誤
OracleClient名字空間包括了一個特定於Oracle的例外類
即OracleException
它可以用在標准的try…catch代碼塊中
清單B給出的代碼就利用上述方法來捕獲任何例外
清單B給出了一個如何在運行時處理例外的例子
清單B如下
Listing B: Exception handling
Dim oracleConnection As New OracleConnection() Dim oracleCommand As New OracleCommand() Dim oracleReader As OracleDataReader Dim sqlString As String sqlString =
data source=oracle
server;user id=test;password=test
Try oracleConnection
ConnectionString = sqlString oracleConnection
Open() oracleCommand
CommandText =
SELECT * FROM DBTEST
PEOPLE
oracleCommand
Connection = oracleConnection oracleReader = oracleCommand
ExecuteReader
Work with oracle data oracleReader
Close() oracleCommand
Dispose() Catch ex As OracleException
handle the exception Catch ex As Exception
handle the exception Finally If Not (oracleConnection Is Nothing) Then oracleConnection
Close() End If End Try
盡管在本文中我用到了OracleDataReader類
但實際上Oracle數據提供者包括了所有標准ADO
NET類(如OracleDataSet和OracleDataAdapter)的各種版本
微軟公司推出的
NET Managed Provider For Oracle提供了自由訪問Oracle數據的必備工具
其性能遠優於對OLE
DB的訪問
ADO
NET類的設計對數據庫的訪問所用的方法相同
對象相似
與數據庫類型無關
因此
OLE
DB項目可以很容易轉換到Oracle下
From:http://tw.wingwit.com/Article/program/Oracle/201311/16573.html