天天看點

.net程式員使用Oracle新手上路指南

雖然oracle,sqlserver都是關系型資料庫,sql語句大部分也差不多,但是從sqlserver換到oracle還是有很多不适應的地方,本文旨在幫助廣大初次接觸oracle的.net程式員快速上手。

一、安裝oracle 11g 服務端(可選)

1.1 為什麼要安裝服務端?

理論上講,本機隻需要安裝oracle用戶端即可,但是很多時候本機有一個服務端學習起來會更友善。比如:資料庫的導入/導出,資料庫的建立等,均需要服務端。

注:oracle的server真的很占記憶體,如果您的愛姬記憶體在2G以下,建議直接跳過本步驟吧.

1.2 服務端的安裝檔案下載下傳位址

<a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html</a>

因為我的筆記本是Win2008 R2系統,是以選擇了特定的win2008 x64版本(安裝檔案約1.9G),下載下傳位址如下

<a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111070-win64-2008soft-084715.html">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111070-win64-2008soft-084715.html</a>

在win200 r2上安裝時,會提示作業系統不滿足安裝要求,如下圖:

.net程式員使用Oracle新手上路指南

不用理會,直接把問題項前面的複選框勾上,然後就能進入下一步繼續安裝了。

安裝完成的最後一個界面上,在密碼管理裡,最好把scott帳号解除鎖定(這是學習oracle的經典帳号,很多示例教程都是用這個帳号連接配接的,其預設密碼是tiger)

.net程式員使用Oracle新手上路指南
.net程式員使用Oracle新手上路指南

1.3 如何測試服務端是否安裝正确了

先打開Net Manager

.net程式員使用Oracle新手上路指南

展開服務命名

.net程式員使用Oracle新手上路指南

點選左側“紅色叉”按鈕下的圖示

.net程式員使用Oracle新手上路指南

如果提示測試成功,則表示server端運作正常了。

二、安裝for .Net特定的用戶端 ODAC with Oracle Developer Tools for Visual Studio

這是oracle官方推出的for .net的連接配接用戶端,性能優于微軟自帶的System.Data.OracleClient下的東東,也是目前綜合性能最好的.net用戶端

下載下傳位址

<a href="http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html">http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html</a>

一路Next即可,如果提示作業系統不滿足要求,參考前面安裝服務端時的處理

三、安裝pl/sql developer

oracle安裝完成後,自帶了一個叫sql plus的查詢工具,相當于sqlserver中的查詢分析器,能用它練習sql,但是這個東東功能太弱,實在是難用。

是以推薦大家用第三方的pl/sql developer,百度一下就能找到下載下傳位址和注冊碼。

這個軟體第一次啟動的界面如下:

.net程式員使用Oracle新手上路指南
.net程式員使用Oracle新手上路指南

因為我們還沒有配置tnsnames.ora檔案(這個可以了解為web.config或machine.config,用于儲存本機oracle client端的所有連接配接資訊,隻有正确配置以後,oracle client才能正确連接配接oracle db server)

進入 %oracle_home%\Network\Admin\Sample(注:%oracle_home%指oracle用戶端安裝後的根目錄) 找到tnsnames.ora檔案,把它複制到%oracle_home%\Network\Admin\下

用記事本打開,參照下面修改:

# Every line that begins with # is a comment line

#

# Create Oracle net service names, or aliases, for each database server

# you need to connect to.

# TNSNames.ora sample entry

# alias =

#  (DESCRIPTION =

#    (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.mycompany.com)(PORT = 1521))

#    (CONNECT_DATA =

#      (SERVER = DEDICATED)

#      (SERVICE_NAME = orcl)

#    )

#  )

# You can modify the entry below for your own database.

# &lt;data source alias&gt; = Name to use in the connection string Data Source

# &lt;hostname or IP&gt; = name or IP of the database server machine

# &lt;port&gt; = database server machine port to use

# &lt;database service name&gt; = name of the database service on the server

local =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

解釋一下:local是自己定義的名稱,可以随便改,隻要不重複就行了,host後面的部分是伺服器ip位址,port是端口号,SERVICE_NAME是oracle server安裝時的執行個體命名,修改完成後,儲存。

再次打開pl/sql,會發現database下拉框裡多出了一個local,如下圖:

.net程式員使用Oracle新手上路指南

使用者名輸入scott,密碼輸入tiger,選擇local,登入,成功!

.net程式員使用Oracle新手上路指南

三、.net與oracle的連接配接

這是初學者最頭痛的問題,oracle有4種方式可供.net連接配接

3.1 古老的ODBC資料源連接配接

先打開"Microsoft ODBC管理者",如下圖

.net程式員使用Oracle新手上路指南

會看到設定界面

.net程式員使用Oracle新手上路指南
.net程式員使用Oracle新手上路指南

在vs2010的server explorer面闆中,建立一個connection

.net程式員使用Oracle新手上路指南

選擇Change,再選擇ODBC資料源

.net程式員使用Oracle新手上路指南

接下來的事情,大家照提示來就行了,不過我測試發現,ODBC方式在vs.net 2010/win2008 r2下,始終連接配接不上,

.net程式員使用Oracle新手上路指南

但是在控制台的資料源裡,test connection是成功的。

.net程式員使用Oracle新手上路指南

個中原因,也許隻有微軟知道,是以這種方式我是沒實踐成功,放棄!反正odbc這種老古董我也不喜歡。

3.2 微軟自帶的System.Data.OracleClient

同樣,server explorer面闆中,add 一個connection,在出來的界面中,選擇change,切換成

.net程式員使用Oracle新手上路指南

輸入使用者名和密碼後,就能連接配接成功。

.net程式員使用Oracle新手上路指南

除非你的項目将來不打算更新,否則不建議大家用這種方式。

為了引用System.Data.OracleClient,需要添加對System.Data.OracleClient.dll的引用,預設是在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0目錄下

添加引用成功後,就能用下面的代碼進行查詢了:

3.3 oledb方式

.net程式員使用Oracle新手上路指南

連接配接字元串為

Provider=MSDAORA;Data Source=local;Persist Security Info=True;User ID=scott;Password=tiger

示例代碼:

3.4 Oracle官方的ODP.Net

.net程式員使用Oracle新手上路指南

連接配接字元串為 DATA SOURCE=local;PERSIST SECURITY INFO=True;USER ID=SCOTT;Password=tiger

要使用ODP.Net,必須先添加對Oracle.DataAccess.dll的引用,該檔案位于%Oracle_Home%\11.2.0\odp.net\bin\4下

示例代碼如下:

為了測試這三種方式(ODBC不考慮)的性能,簡單寫了一段代碼測試了一下:

運作結果:

Oracle.DataAccess.Client        5000次耗時:4711毫秒

System.Data.OleDb       5000次耗時:53684毫秒

System.Data.OracleClient        5000次耗時:8436毫秒

相信大家知道如何選擇了吧,果然還是Oracle官方更熟悉自己的産品。