c# oracle數據庫 ORA-12154: TNS: 無法解析指定的連接標識符

首先我先描述一下我的問題:

我是用的vs2008開發的C#程序,win7 64位系統,我的系統中裝有64 位oracle 11g的數據庫和32爲的client端。

如果不知道爲什麼這麼裝,先看本段落,如果知道,直接看下一段。pl/sql因爲是爲32位oracle程序開發的,故不支持64位數據庫,下載client安裝,或者直接裝instant client也可以,在pl/sql 工具->首選項->連接中的oracle主目錄和oracle OCI庫改爲client端的目錄和OCI所在的路徑,pl/sql就可以正常工作了。用服務端配置連接名時很愛出錯,我一般用client端的net configuration assist配置連接名,所以裝了client,而不是instant client。

我的配置文件tnsname.ora使用client配置的,pl/sql連接正常,tnsping也能ping通,sql plus連接也正常。但是在連接數據庫時報告ORA-12154: TNS: 無法解析指定的連接標識符。在網上找了幾篇文章沒有解決,後來想起了OCI的不兼容問題,編寫的64位程序調用32位OCI程序應該會出現問題,於是找到Debug解決方案平臺,把我的程序的目標平臺改爲X86,也就是32位程序,程序通過。


貼出測試代碼:DataSource爲配置的服務命名


OracleConnection conn = new OracleConnection("DataSource=orcl_localhost;User ID=PSIDP;Password=PSIDP");//Data Source後面跟你數據庫的名字,User ID爲用戶名,Password爲密碼            
            conn.Open();
            string sql = "insert into users(name,pwd) values(:name,:pwd)";
            OracleCommand cmd = new OracleCommand(sql, conn);
            OracleParameter parn = new OracleParameter(":name", name);
            cmd.Parameters.Add(parn);
            OracleParameter parp = new OracleParameter(":pwd", name);
            cmd.Parameters.Add(parp);
            //int result = cmd.ExecuteNonQuery();//result接收受影響行數,也就是說result大於0的話表示添加成功
            int result = cmd.ExecuteNonQuery();
            conn.Close(); cmd.Dispose();

發佈了23 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章