2013-09-23 47 views
2

我的連接失敗,出現以下消息:「過程入口點ons_subscriber_cancelcallback無法位於動態鏈接庫oraons.dll中」。C# - Oracle Connectivity

任何人都可以請幫助?

的代碼非常直截了當:

string oradb = ""; 
    oradb = "Data Source=MYORADB;Password=MYPASS123;User ID=MYUSERID;"; 
    OracleConnection conn = new OracleConnection(oradb); 
    conn.Open(); 

我已經連接了蟾蜍使用這些憑證。

+0

如果您發佈了所有您正在使用的連接代碼,這將會更容易。您是否使用http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html上提供的Oracle驅動程序?也看看這篇文章:http://www.oracle.com/technetwork/articles/dotnet/vs2010-oracle-dev-410461.html –

+0

我已經添加了代碼片段。它是一個非常簡單的方法。並且是在嘗試使用Oracle.DataAccess.Client –

回答

0

您似乎沒有數據庫IP或端口號。一旦你擁有了這些,請嘗試使用Oracle EZCONNECT格式:

//Check that MYORADB is your actual SID number 
string oradb = getConnectionString("10.1.2.3", 1521, "MYORADB", "MYUSERID", "MYPASS123"); 
OracleConnection conn = new OracleConnection(oradb); 
conn.Open(); 

private static string getConnectionString(string databaseIP, int databasePort, string databaseSID, string databaseUN, string databasePW) 
{ 
    return string.Format(
     "Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = {1}))(CONNECT_DATA =(SID = {2})));" + 
     "Persist Security Info=True;User ID={3};Password={4}", 
     databaseIP, databasePort, databaseSID, databaseUN, databasePW 
    ); 
} 
+0

仍然沒有運氣 - 它與Oracle客戶端與Oracle服務器兼容的版本有什麼關係?我正在使用Oracle客戶端版本11g,但我的服務器是10g。 –

+0

不知道版本差異是不是罪魁禍首,而是另一個想法。首先,創建文件夾C:\ OracleClient,將oraons.dll放入其中,並將C:\ OracleClient添加到您的Windows PATH變量中(如果您不熟悉如何操作,請使用Google)。如果這不起作用,我會Google「ons_subscriber_cancelcallback」,直到你找到有效的東西。我感到你的痛苦 - 花了我好幾天的時間才讓Oracle與我的C#應用​​程序一起工作。堅持下去,你會得到它的工作! –

+0

我克服了它。實際上,我的機器上安裝了11g和12c的多個Oracle Client版本。卸載它們,重新啓動機器。剛安裝了12c的Oracle Client,錯誤消失了。謝謝您的幫助。 –

0

對我來說,解決辦法是去到Oracle的網站,我下載並安裝最新版本的Oracle數據訪問組件(ODAC) 。

你會想要小心地爲你的編程環境安裝正確的版本。在我的情況下,它是版本12C(64位)。

從那裏,我重定向了Oracle.DataAccess.dll引用到我剛剛安裝的版本。