连接到Oracle数据库

kkn*_*uib 9 c# database database-connection oracle11g

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

con = new OracleConnection(oradb);
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误."程序无法启动,因为您的计算机缺少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
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能连接任何建议?

小智 6

PATH设置不是必需的.我用oraons.dllinto dhe ORACLE_HOME\bin文件夹的副本解决了同样的问题,然后安装工作.

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

HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.112.4.0\DllPath 
Run Code Online (Sandbox Code Playgroud)

DllPath指向BIN文件夹的点ORACLE_HOME.这意味着对BIN文件夹的PATH设置ORACLE_HOME没有帮助.另外一个PATHORACLE_HOME客户端会有所帮助.我认为没有必要.只有一份oraons.dll进入BIN就足够了.


kkn*_*uib 5

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