雖然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上安裝時,會提示作業系統不滿足安裝要求,如下圖:

不用理會,直接把問題項前面的複選框勾上,然後就能進入下一步繼續安裝了。
安裝完成的最後一個界面上,在密碼管理裡,最好把scott帳号解除鎖定(這是學習oracle的經典帳号,很多示例教程都是用這個帳号連接配接的,其預設密碼是tiger)
1.3 如何測試服務端是否安裝正确了
先打開Net Manager
展開服務命名
點選左側“紅色叉”按鈕下的圖示
如果提示測試成功,則表示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,百度一下就能找到下載下傳位址和注冊碼。
這個軟體第一次啟動的界面如下:
因為我們還沒有配置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.
# <data source alias> = Name to use in the connection string Data Source
# <hostname or IP> = name or IP of the database server machine
# <port> = database server machine port to use
# <database service name> = 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,如下圖:
使用者名輸入scott,密碼輸入tiger,選擇local,登入,成功!
三、.net與oracle的連接配接
這是初學者最頭痛的問題,oracle有4種方式可供.net連接配接
3.1 古老的ODBC資料源連接配接
先打開"Microsoft ODBC管理者",如下圖
會看到設定界面
在vs2010的server explorer面闆中,建立一個connection
選擇Change,再選擇ODBC資料源
接下來的事情,大家照提示來就行了,不過我測試發現,ODBC方式在vs.net 2010/win2008 r2下,始終連接配接不上,
但是在控制台的資料源裡,test connection是成功的。
個中原因,也許隻有微軟知道,是以這種方式我是沒實踐成功,放棄!反正odbc這種老古董我也不喜歡。
3.2 微軟自帶的System.Data.OracleClient
同樣,server explorer面闆中,add 一個connection,在出來的界面中,選擇change,切換成
輸入使用者名和密碼後,就能連接配接成功。
除非你的項目将來不打算更新,否則不建議大家用這種方式。
為了引用System.Data.OracleClient,需要添加對System.Data.OracleClient.dll的引用,預設是在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0目錄下
添加引用成功後,就能用下面的代碼進行查詢了:
3.3 oledb方式
連接配接字元串為
Provider=MSDAORA;Data Source=local;Persist Security Info=True;User ID=scott;Password=tiger
示例代碼:
3.4 Oracle官方的ODP.Net
連接配接字元串為 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官方更熟悉自己的産品。