【问题标题】:Connect to an Oracle database连接到 Oracle 数据库
【发布时间】:2014-03-18 18:59:46
【问题描述】:

我正在尝试连接到 Oracle 数据库,但是当代码正在执行该行时:

con = new OracleConnection(oradb);

它给出了这个错误。 “程序无法启动,因为您的计算机中缺少 oraons.dll。请尝试重新安装程序以解决此问题。”我已经从以下站点 http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 在我的计算机上安装了 ODP for .net 并引用了 Oracle.DataAccess。

我还检查了安装的文件夹,我可以在文件夹中看到 oraons dll。代码如下:

class OracleDatabase
{
    OracleConnection con;
    public void ConnectToOracleDb()
    {
        string oradb = getConnectionString("host", 1521, "sid", "user", "pass");

        try
        {
            con = new OracleConnection(oradb);
            con.Open();
            Console.WriteLine("Connected to Oracle" + con.ServerVersion);
        }
        catch
        {
            Console.WriteLine("Could not connect to FLX");
        }

    }

    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 xcopy(似乎是这种方式)安装 ODP.NET 驱动程序,请检查驱动程序目录是否已添加到 Windows 系统 PATH。如果是 Oracle xcopy,您必须手动完成。
  • 刚刚检查它已经被添加了@NicholasKrasnov
  • 你安装oracle客户端软件了吗?
  • 我在 win server 2008 上遇到了与非托管 oracle 相同的问题,但在 win server 2008 R2 上运行良好。无论哪种情况,我的路径环境变量中都有到 oracle home 的正确路径。

标签: c# database oracle11g database-connection


【解决方案1】:

我最终引用了 ManagedDataAccess.Client 而不仅仅是 Data.Access.Client 并且它起作用了。

【讨论】:

  • 问题出在 PATH 上。选择托管数据访问是作弊:)
【解决方案2】:

我在我的测试项目中遇到了这个错误。问题是我从具有旧 PATH 的命令行打开 Visual Studio。打开一切新鲜的东西后,它工作了。

检查代码中的 PATH,并确保 oracle 文件夹位于 PATH 中。

【讨论】:

  • 谢谢。今天遇到了这个问题。从 windows 菜单而不是 slick run 开始,这解决了问题
  • 其实我是在VS运行的时候安装驱动的。重新打开 VS 有帮助,谢谢!
【解决方案3】:

PATH 设置不是必需的。我通过将 oraons.dll 复制到 dhe ORACLE_HOME\bin 文件夹中解决了同样的问题,然后安装就可以了。

通过安装程序的 Oracle 设置和 xcopy depoyment 之间存在差异。我现在不知道为什么。两个安装都有相同的注册表设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.112.4.0\DllPath 

并且DllPath 指向ORACLE_HOMEBIN 文件夹。这意味着对ORACLE_HOMEBIN 文件夹的PATH 设置没有帮助。向客户的ORACLE_HOME 添加一个额外的PATH 会有所帮助。我认为这没有必要。只需将oraons.dll 复制到BIN 就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    相关资源
    最近更新 更多