[轉載].net 訪問oracle的總結

來源:互聯網
上載者:User

  長期以來,我一直用的是 MS SQL Server / Access 資料庫,通過.NET 訪問MS自家的東西幾乎沒碰到過什麼麻煩。最近項目中要用 Oracle 作為資料庫,學習研究了一些 .NET 訪問Oracle 的東西,發現問題倒真的不少。

1。System.Data.OracleClient 和 System.Data.OleDb 命名空間

   雖然通過這兩個命名空間的類都可以訪問 Oracle 資料庫,但和 SQL Server 類似的(System.Data.SqlClient 命名空間的類效率要比 System.Data.OleDb 命名空間中的類高一些),System.Data.OracleClient 命名空間中的類要比 System.Data.OleDb 命名空間的類效率高一些(這一點我沒有親自驗證,但大多數地方都會這麼說,而且既然專門為 Oracle 作的東西理論上也應該專門作過針對性的最佳化)。

  當然還有另一點就是從針對性上說,System.Data.OracleClient 要更好一些:

   比如資料類型,System.Data.OleDb.OleDbType 枚舉中所列的就沒有 System.Data.OracleClient.OracleType 枚舉中的那些有針對性;另外,Oracle 的Number 類型如果數字巨大,超出 .NET 資料類型範圍的情況中,就必須使用System.Data.OracleClient 中的專門類 -- OracleNumber 類型。

  好了,不再贅述這兩個的比較,下面主要討論System.Data.OracleClient 命名空間中的類型,即 ADO.NET for Oracle Data Provider (資料提供者)。

2。資料庫連接:

   無論是 System.Data.OleDb 還是 System.Data.OracleClient 訪問 Oracle 都需要在 .NET 啟動並執行機器(ASP.NET 中就是 Web 服務器)安裝 Oracle 用戶端組件。(這一點是和 MS 的兩種資料庫不同的,MS 的東西安裝 MDAC: Microsoft Data Access Component 2.6 以上版本後,就無須再安裝 SQL Server 用戶端或者 Office 軟體,就能訪問。)

System Requirements:

  (1) 如用 System.Data.OracleClient 訪問 Oracle,用戶端組件版本應在 Oracle 8i Client Release 3 (8.1.7)以上版本。MS 只確保訪問 Oracle 8.1.6、Oracle 8.1.7、Oracle 9i 伺服器時的情況。MDAC 2.6 以上。

  (2)如用 System.Data.OleDb 訪問 Oracle,用戶端組件版本 7.3.3.4.0 以上或 8.1.7.4.1 以上。MDAC 2.6 以上。

  如伺服器為 Oracle8i 以上,用戶端組件版本應為 8.0.4.1.1c。

  在 .NET 啟動並執行機器中,安裝 Oracle 用戶端,然後開啟 Net Manager (Oracle 9i) / Easy Config (Oracle 8i) 按你以前的經驗設定本地服務的映射(這裡的服務名將用於資料庫連接串)。

  System.Data.OracleClient 中訪問 Oracle 資料庫的串連串是:

User ID=使用者名稱; Password=密碼; Data Source=服務名

  (上述為一般的串連串,詳細的串連串項目可以在 System.Data.OracleClient.OracleConnection.ConnectionString 屬性的文檔中找到。)

  System.Data.OleDb 中的訪問 Oracle 資料庫的串連串是:

Provider=MSDAORA.1; User ID=使用者名稱; Password=密碼; Data Source=服務名

 

 

 

   關於訪問方式的總結

我在查看ORACLE網站、MSDN2005及註冊表之後,小有收穫,特寫此文,希望對各位有所協助。

好了,廢話結束,現在看本文:

1.ODBC方式
我們可以在 "我的電腦-> 控制台-> (效能和維護-> )管理工具-> 資料來源(ODBC)-> 系統DSN-> 添加 ",查看系統中已經安裝好的ODBC驅動,其中就包含了“Microsoft   ODBC   Driver   for   Oracle”。
所以,如果用ODBC方式來訪問ORACLE,可以不用安裝ORACLE   CLIENT;

2.OLEDB方式
請大家開啟登錄編輯程式regedit,搜尋oracle即可以搜尋到以下鍵:
Microsoft   OLE   DB   Provider   for   Oracle
HKEY_CLASSES_ROOT\CLSID\{e8cc4cbe-fdff-11d0-b865-00a0c9081c1d}\OLE   DB   Provider
HKEY_CLASSES_ROOT\MSDAORA
所以,只要你安裝了合適版本的MDAC,那麼起碼就已經可以使用OLEDB來訪問ORACLE了。

3.System.Data.OracleClient方式
以上2種都是比較通用的方式,我們再來看看M$專門為ORACLE寫的類。
請大家開啟MSDN2005,輸入地址
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs /WD_ADONET/html/054f76b9-1737-43f0-8160-84a00a387217.htm(您也可以通過目錄、索引或者搜尋 來找到)
《Oracle   .NET   Framework   資料提供者的系統要求》(即System.Data.OracleClient命名空間中的類),摘要如下:
Oracle   .NET   Framework   資料提供者需要   Microsoft   資料訪問組件   (MDAC)   2.6   版或更高版本。建議使用   MDAC   2.8   SP1。
還必須安裝   Oracle   8i   Release   3   (8.1.7)   用戶端或更高版本。
Oracle   9i   版本之前的   Oracle   用戶端軟體無法訪問   UTF16   資料庫,因為   UTF16   是   Oracle   9i   中的一項新功能。要使用此功能,必須將用戶端軟體升級到   Oracle   9i   或更高版本。
哈哈,M$其實沒有我們想象中的勤奮,他只是幫ORACLE   CLIENT做了個封裝而已。

4.Oracle   Data   Provider   for   .net(ODP.NET)
我們再到ORACLE的老家轉轉,可以發現他在很多地方都吹噓ODP.NET,看看它有些什麼要求才能用吧。
請大家在瀏覽器中輸入地址(ORACLE的網站有點慢,請不要急)
http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install
Q:   What   do   I   need   to   have   installed   on   my   client   machine   to   have   ODP.NET   work?
A:   You   will   require   the   following:  
Windows   2000,   Windows   XP   Professional,   or   Windows   Server   2003  
Microsoft   .NET   Framework   1.0   or   higher  
Oracle9i   Client   Release   2   (9.2)   or   higher  
Oracle   Net   Services   (included   with   the   client)  
Oracle   Services   for   Microsoft   Transaction   Server,   Release   2   (9.2)   or   higher.   This   is   required   for   applications   using   distributed   transacations.  
簡單翻譯:
如果你用ODP.NET來訪問ORACLE資料庫,你需要以下條件:
作業系統:WIN2K   XP   2003
.NET   FRAMEWORK   1.0以上
ORACLE9I以上的用戶端

5.第3方的觀點:
在   http://www.fawcette.com/vsm/2003_07/magazine/columns/databasedesign/  
有一篇文章叫 < <Take   Advantage   of   Oracle   in   .NET> >
講了如何在可視環境下(也就是用滑鼠點、拖等操作)訪問ORACLE   。
用的似乎就是OLE   DB的方式。

好了,現在來做個總結。
同志們,回顧曆史,展望未來,我們要發揚XXXX,高舉YYYY(以下省略5000字)......
1.在不安裝ORACLE用戶端的情況下,可以用ODBC和OLEDB   2種方式來訪問ORACLE;
2.如果喜歡多往別人的機器裝東西,不怕麻煩,可以用“效能最好”(ORACLE網站這麼說的)的ODP.NET來訪問ORACLE;
3.如果用System.Data.OracleClient,可以稍微少裝點東西,不過比2的協助文檔更多,並且我們似乎都習慣使用微軟的東西。
4.推薦使用System.Data.OleDb中的類來訪問ORACLE,優點:(1)因為我懶,我不喜歡往別人和我自己的機器裡安裝過多的東西; (2)可以運行在WIN98以上的系統下,而2   3中的方式只能在WIN2K以上的系統下;(3)ODBC似乎太老了點,看來我是中庸派的人......(哎,老了   -_-     )

好了,感謝您堅持看完本文,希望沒有浪費您的時間,對您有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.