熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

用.NET新提供的managed provider來訪問Oracle數據

2013-11-13 12:46:55  來源: Oracle 

  微軟公司把SQL Server提升為NET應用程序的數據庫但是由於Oracle很高的市場占有率你無疑需要在NET應用程序中使用Oracle數據在ADONET中Oracle數據是利用通用的OLEDB 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中添加對SystemDataOracleClientdll的引用為此你可以在Visual Studio NET中鼠標右擊References列表或者從菜單欄中選擇Project | Add Reference你也許還需要在你的應用程序中正確導入SystemDataOracleClient名字空間
  
  訪問數據
  NET環境的一大優點就是數據庫訪問代碼通常遵循相同的模式而與後端數據庫無關首先你建立一個連接然後配置SQL語句或者指令最後執行SQL(語句或者命令)並處理結果
  
  顯而易見用來訪問Oracle數據庫的代碼與用來訪問SQL Server的代碼不會有很大的區別這兩者的對象名字不同但是過程是相似的你可以在清單A中的VBNET代碼中很清楚的看出這一點
  清單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=oracleserver;user id=test;password=test oracleConnectionConnectionString = oracleConnectionOpen() oracleCommandCommandText = SELECT * FROM DBTESTPEOPLE oracleCommandConnection = oracleConnection oracleReader = oracleCommandExecuteReader
  
  清單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=oracleserver;user id=test;password=test Try oracleConnectionConnectionString = sqlString oracleConnectionOpen() oracleCommandCommandText = SELECT * FROM DBTESTPEOPLE oracleCommandConnection = oracleConnection oracleReader = oracleCommandExecuteReader Work with oracle data oracleReaderClose() oracleCommandDispose() Catch ex As OracleException handle the exception Catch ex As Exception handle the exception Finally If Not (oracleConnection Is Nothing) Then oracleConnectionClose() End If End Try
  
  
  盡管在本文中我用到了OracleDataReader類但實際上Oracle數據提供者包括了所有標准ADONET類(如OracleDataSet和OracleDataAdapter)的各種版本微軟公司推出的NET Managed Provider For Oracle提供了自由訪問Oracle數據的必備工具其性能遠優於對OLEDB的訪問ADONET類的設計對數據庫的訪問所用的方法相同對象相似與數據庫類型無關因此OLEDB項目可以很容易轉換到Oracle下
From:http://tw.wingwit.com/Article/program/Oracle/201311/16573.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.