天天看點

C#通過ODAC通路Oracle12c

昨天晚上剛裝好Oracle12c并配制好了PLSQL Developer開發環境。今天繼續完善一下,講講在C#中如何通路Oracle12c。

其實我們運用老早的ADO.NET也可以連接配接,但是在.NET Framework4.0開始,已經不推薦使用。如果我們還是引用System.Data.OracleClient,在程式代碼中使用OracleConnection、OracleCommand等資料庫核心操作類時會有綠色的波浪線提示你該類已經過時。

C#通過ODAC通路Oracle12c

把滑鼠放到綠色波浪線處,會有如下提示:

C#通過ODAC通路Oracle12c

它說System.Data.OracleClient.OracleConnection類已經過時,後面給出了一個微軟官方的連結。

我們打開浏覽器輸出如上網址:http://go.microsoft.com/fwlink/?linkID=144260。如果你英文不行,可以用這個位址:http://msdn.microsoft.com/zh-cn/library/77d8yct7.aspx。

網址裡面的說明非常直覺:

C#通過ODAC通路Oracle12c

這裡需要說明的是,雖然提示已經過時,但是程式還是運作的。隻不過微軟官方建議使用更加高效的第三方Oracle提供程式。

下面就正式介紹Oracle提供的比ADO.NET更高效連接配接的ODAC(Oracle Data Access Components)元件。

這個元件同樣可以在官方網站下面下載下傳到。http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

我們根據自己之前安裝的Oracle的版本選擇合适的版本進行下載下傳。因為我之前是裝的Oracle 12c R1版本并且是64位的,是以我們選擇如下圖所示的檔案進行下載下傳。

C#通過ODAC通路Oracle12c

下載下傳好之後,解壓到檔案夾下面,運作setup.exe檔案,進行安裝。我們下的這個版本是支援VS2010和VS2012的,由于我裝的是VS2012,安裝過程中需要手動選擇一下安裝到VS2012,其它都是下一步。安裝時間不長,耐心等待至安裝完畢後退出。

環境準備好,我們就可以測試一下在VS2012中能否連接配接到Oracle 12c了。

測試過程很簡單:

打開VS2012,選擇菜單欄中的視圖,然後選擇伺服器資料總管。在資料連接配接上面右鍵滑鼠,在彈出的菜單欄中選擇添加連接配接後會打開如下頁面。輸入賬号、密碼等要素後, 點選測試連接配接按鈕可以得到連接配接回報(成功或失敗)。

C#通過ODAC通路Oracle12c

如果彈出“測試連接配接成功。”的提示,則表明我們通過Oracle提供的ODAC元件成功連接配接Oracle 12c了。

C#通過ODAC通路Oracle12c

緊接着我們就可以在VS中寫代碼來測試一下,我們還是用上面的測試用例,輸出目前資料庫的系統時間。

首先我們要在項目中引用Oracle.DataAccess,然後就可以模仿ADO.NET的代碼來寫ODP.NET的代碼了。

1

2

3

4

5

6

7

8

9

<code>string</code> <code>connString = </code><code>"Data Source=orcl;User ID=C##guwei4037;Password=123456;DBA Privilege=SYSDBA;"</code><code>;</code>

<code>using</code> <code>(Oracle.DataAccess.Client.OracleConnection conn = </code><code>new</code> <code>Oracle.DataAccess.Client.OracleConnection(connString))</code>

<code>{</code>

<code>    </code><code>if</code> <code>(conn.State != ConnectionState.Open) conn.Open();</code><code>//打開資料庫連接配接</code>

<code>         </code> 

<code>    </code><code>Oracle.DataAccess.Client.OracleCommand cmd = </code><code>new</code> <code>Oracle.DataAccess.Client.OracleCommand(</code><code>"select sysdate from dual"</code><code>, conn);</code><code>//執行一條SQL語句</code>

<code>    </code><code>object</code> <code>obj = cmd.ExecuteScalar();</code><code>//傳回第一行第一列的結果</code>

<code>    </code><code>Console.WriteLine(obj != </code><code>null</code> <code>? obj.ToString() : </code><code>"null"</code><code>);</code>

<code>}</code>

我們運作一下這個控制台應用程式。

C#通過ODAC通路Oracle12c

OK,成功輸出資料庫系統時間,通過ODAC通路Oracle12c成功。

本文轉自 guwei4037  51CTO部落格,原文連結:http://blog.51cto.com/csharper/1352456