Connect to an Oracle database

梦想的初衷 提交于 2019-12-04 19:25:24

问题


I'm trying to connect to an Oracle database but when the the code is executing the line:

con = new OracleConnection(oradb);

It gives this error. "The program can't start because oraons.dll is missing from your computer. Try reinstalling the program to fix this problem." I installed the ODP for .net on my computer already from the following site http://www.oracle.com/technetwork/topics/dotnet/index-085163.html and referenced the Oracle.DataAccess.

I also checked the folder that was installed and I can see the oraons dll in the folder. Here's the code:

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
        );
    }
}

Why can't I connect any suggestions?


回答1:


The PATH setting is not necessary. I solved the same issue with a copy of the oraons.dll into dhe ORACLE_HOME\bin folder and after that the installation works.

There is a difference between an Oracle setup via installer and the xcopy depoyment. I don't now why. Both installations had the same registry setting:

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

and the DllPath points to the BIN folder of the ORACLE_HOME. That means a PATH setting to the BIN folder of the ORACLE_HOME does not help. An additional PATH to the ORACLE_HOME of the client would help. I think that is not necessary. Only a copy of the oraons.dll into the BIN is enough.




回答2:


I ended up referencing the ManagedDataAccess.Client instead of just the Data.Access.Client one and it worked.




回答3:


I was getting that error in my test project. The problem was that I was opening Visual Studio from a command line that had an old PATH. After opening everything fresh, it worked.

Check the PATH from your code, and make sure the oracle folder is in the PATH.



来源:https://stackoverflow.com/questions/21863682/connect-to-an-oracle-database

工具导航Map