.net連Oracle數據庫的兩個方法介紹
1. 安裝oracle客戶端,連接oracle
需要在客戶端%oracle_client_home%network/admin/配置tnsnames.ora,以服務名aa為例,客戶端和服務器服務名及連接串需要保持一致。服務名的配置實例如:
代碼如下 復制代碼
a =
(DESCRipTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = helen)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = a)
)
)
程序代碼:
代碼如下 復制代碼
String connOra = "Data Source=a;User ID=a;passWord=a;Unicode=True";
OracleConnection conn = new OracleConnection(connOra);
conn.Open();www.111cn.net
if (conn.State == ConnectionState.Open)
Response.Write("DataOracle.aspx conn open success");
else
Response.Write("DataOracle.aspx conn open failure");
2.不安裝oracle客戶端,連接oracle
不需要配置tnsnames.ora,把主機、端口、數據庫ID(SID)寫入連接字符串,其他連接同上。
新的連接字符串為:
代碼如下 復制代碼
Data Source= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = helen)(PORT = 1521))) (CONNECT_DATA = (SID= a) ));User ID=a;password=a;Unicode=True
公司用的是oracle10g,vs2010,都是32位的
1) oracle10g在64位Win7無法直接安裝,解決方法:在安裝啟動exe文件右鍵打開屬性菜單,然后選擇兼容性--->勾選以兼容性運行這個程序-->選擇winxp,保存后可以安裝。
2)之前用winxp32位系統,連接字符串是這樣子的
代碼如下 復制代碼
<add name="SQLMembershipConnString2" connectionString="Data Source=ORCL;User Id=system;Password=123456;" providerName="Oracle.Dataaccess.Client"/>
換到現在64位win7后一直不能運行,折騰了一天才知道竟然是連接字符串的問題。提示的錯誤是說oracle客戶端版本不夠高,不管連接字符串怎么改都是一樣錯誤提示,百度后找到很多文章都是說權限不足原因(不確定是否有這個原因),改了后還是一樣問題,這個問題折騰了我一天的時間?。?,后來還下載了oracle的odp.net組件,32位的64位的各種折騰,都有錯誤提示,按錯誤提示在網上搜索都不能解決。以為framework的類和odp.net有兼容問題。后來他仔細看了odp.net的說明,本來打算是連接遠程服務器,就試著用
代碼如下 復制代碼
<add name="SQLMembershipConnString3" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.253.11)(PORT=1521)) (CONNECT_DATA=(SID=HZDB)));User Id=test;Password=123456;" providerName="Oracle.DataAccess.Client"/> www.111Cn.net
這樣的字符串,因為之前大量變動的原因,所以也折騰了很久也沒連上,正當我打算要放棄回家重裝32位系統時,刷頁面發現錯誤提示是“未找到表或視圖”,我靠!然后就這樣發現了問題的根源:連接字符串不對呀。然后換上System.Data.OracleClient也正常了。
經過測試發現另外一種寫法也是可以的:
代碼如下 復制代碼
<add name="SQLMembershipConnString" connectionString="Data Source=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.253.128)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
);User Id=test;Password=123456;
" providerName="Oracle.DataAccess.Client"/>
更多詳細內容請查看:http://www.111cn.net/net/37/47472.htm
新聞熱點
疑難解答