连接到Oracle数据库

时间:2014-02-18 19:38:14

标签: c# database oracle11g database-connection

我正在尝试连接到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
        );
    }
}

为什么我无法连接任何建议?

3 个答案:

答案 0 :(得分:5)

不需要PATH设置。我将oraons.dll的副本复制到dhe ORACLE_HOME\bin文件夹中解决了同样的问题,之后安装正常进行。

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

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

并且DllPath指向BIN的{​​{1}}文件夹。这意味着ORACLE_HOME的{​​{1}}文件夹的PATH设置无效。对客户BIN的额外ORACLE_HOME会有所帮助。我认为没有必要。只有PATH ORACLE_HOME的副本就足够了。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

相关问题