问题
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