C#-Oracle连接

C#-Oracle连接,oracle,connection,Oracle,Connection,我的连接失败,并显示以下消息:“在动态链接库oraons.dll中找不到过程入口点ons\u subscriber\u cancelcallback” 有人能帮忙吗 代码非常简单: string oradb = ""; oradb = "Data Source=MYORADB;Password=MYPASS123;User ID=MYUSERID;"; OracleConnection conn = new OracleConnection(oradb); conn.Open()

我的连接失败,并显示以下消息:“在动态链接库oraons.dll中找不到过程入口点ons\u subscriber\u cancelcallback”

有人能帮忙吗

代码非常简单:

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

我已经用这些凭据连接了TOAD。您似乎没有数据库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
    );
}

对我来说,解决方案是访问Oracle网站,在那里我下载并安装了最新版本的Oracle数据访问组件(ODAC)。

您需要小心地为您的编程环境安装正确的版本。在我的例子中,它是版本12c(64位)。


从那里,我将Oracle.DataAccess.dll的引用重定向到我刚安装的版本。

如果您发布了所有正在使用的连接代码,将更容易提供帮助。您是否正在使用上提供的Oracle驱动程序?还可以看看这篇文章:我已经添加了代码片段。这是一个非常直接的方法。是的,我尝试使用Oracle.DataAccess.client仍然不走运-这与Oracle客户端版本与Oracle服务器的兼容性有关吗?我使用的是Oracle客户端版本11g,但我的服务器是10g。不确定版本差异是否是罪魁祸首,但还有一个想法。首先,创建文件夹C:\OracleClient,将oraons.dll放入其中,并将C:\OracleClient添加到Windows路径变量中(如果不熟悉如何操作,请使用Google)。如果这不起作用,我会在谷歌上搜索“ons\u订户\u取消回调”,直到你找到有效的东西。我感觉到了你的痛苦——我花了好几天时间让Oracle使用我的C#应用程序。坚持下去,你会成功的!我忘了。实际上,我的机器上安装了多个Oracle客户端版本,用于11g和12c。卸载了它们,重新启动了计算机。刚刚安装了Oracle Client for 12c,错误消失了。谢谢你的帮助。干得好!欢迎来到“我让甲骨文在C#上工作并幸存下来”俱乐部。