一、方案1
首先下面的內容,有待我的進一步測試和證實。18.12.20
被證實了,還需要安裝Oracle客戶端,或者本機上安裝oracle數據庫軟件。 18.12.20
1.下載Oracle.ManagedDataAccess.dll
2.添加到C#引用
3.命名空間引用
using Oracle.ManagedDataAccess.Client;
4. 連接參數的獲取
然后打開Oracle安裝的文件夾,以Oracle10為例D:\Oracle10\NETWORK\ADMIN\tnsnames.ora,打開這個文件,會看到
如果沒有請按照圖片內容輸入即可,host=[主機名稱],SERVICE_NAME=[隨意取]
5.完成上述后,連接字符串:
strConnection = “Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LocalHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=XXXX;Password=XXXX;”;
簡單說明一下這個連接字符串,HOST=LostHost|127.0.0.1|主機名三者均可,選擇一個就行;
SERVICE_NAME=[即你剛才在tnsnames中取得名字];
然后在輸入你的Oracle賬戶名密碼即可
6.測試代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Oracle.ManagedDataAccess.Client; namespace WindowsFormsApplication1 { public partial class Form1 : Form { string strConnection =@ "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=XXX)));Persist Security Info=True;User ID=XXX;Password=XXX;";//以上為一行,顯示為三行 public Form1() { InitializeComponent(); connectTest(); } public void connectTest() { try { string str_sql = "SELECT * FROM XXX"; OracleConnection conn = new OracleConnection(strConnection); OracleCommand cmd1 = new OracleCommand(str_sql, conn); conn.Open(); MessageBox.Show("連接成功!"); conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); MessageBox.Show("READSQL"); } } } }
二、方案2
2.1 asp.net遠程連接oracle數據庫不用安裝oracle客戶端的方法
下面是asp.net連接遠程Oracle數據庫服務器步驟:
1.asp.net連接oracle服務器需要添加Sytem.Data.OracleClient命名空間。
2.連接時需要ConnectionString字符串,出現在web.config文件中,如下所示:
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=你的數據庫服務器ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=你的數據庫實例名)));User ID=scott;Password=tiger;Unicode=True" providerName="System.Data.OracleClient"/> </connectionStrings>
上面的連接字符串添加了tns解析字符串,不需要再有OracleClient,否則需要安裝,經過上面兩步,在.Net Framework 2.0中遠程連接Oracle 10g數據庫服務器測試通過。
2.2 PL/SQL Developer不安裝客戶端連接遠程oracle數據庫
1、下載敏捷客戶端InstantClient(40M左右,選擇適合自己的下載,我的是instantclient-basic-win32-11.2.0.1.0.zip ):
http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
2、下載安裝PLSQL(16M左右):
http://www.onlinedown.net/soft/4902.htm
3、解壓 instantclient-basic-win32-11.2.0.1.0.zip 到新建文件夾,如 D:/oracleclient/instantclient_11_2
用文本文檔創建tnsnames.ora ,內容大致如下:
# TNSNAMES.ORA Network Configuration File: /opt/oracle/product/9204/network/admin/tnsnames.ora
# Generated by Oracle configuration tools. //以上為注釋內容,因為我的tnsnames.ora是直接從服務器上download的
HSSL = //數據庫名稱
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 218.108.242.30)(PORT = 1521)) //IP和端口
)
(CONNECT_DATA =
(SERVICE_NAME = hssl) //數據庫名稱
)
)
用文本文檔創建sqlnet.ora ,內容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
到我的電腦、屬性、高級、環境變量中添加一個環境變量,變量名為TNS_ADMIN,值為tnsnames.ora文件所在路徑,
例如:D:/oracleclient/instantclient_11_2
4、安裝完畢PLSQL后,啟動,cancel,依次點擊Tools->Preferences->Connection:
Oracle Home=D:/oracleclient/instantclient_11_2
OCI library=D:/oracleclient/instantclient_11_2/oci.dll
重新啟動PLSQL即可進入數據庫,初次登陸可能存在中文亂碼的問題,解決方法如下:
到我的電腦、屬性、高級、環境變量中添加一個環境變量:
變量名:NLS_LANG
變量值:AMERICAN_AMERICA.ZHS16GBK
重新連接,即可正常顯示中文。
如果想轉換為UTF8字符集,可以賦予“NLS_LANG”為 “AMERICAN_AMERICA.UTF8,其他編碼同上
參考文章
C#連接Oracle數據庫(無須安裝客戶端,只須添加dll即可)
在C#中,遠程連接Oracle數據庫(不安裝客戶端,無需多余配置)
.net遠程連接oracle數據庫不用安裝oracle客戶端