2014-02-18 268 views
7

我試圖連接到Oracle數據庫,但在執行代碼的行時:連接到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 
     ); 
    } 
} 

爲什麼我不能連接任何建議?

+1

如果您使用Oracle xcopy(似乎是這樣)安裝ODP.NET驅動程序,請檢查驅動程序目錄是否已添加到Windows系統PATH。在Oracle xcopy的情況下,您必須手動完成。 –

+0

剛查過它已被添加@NicholasKrasnov – kknaguib

+0

您是否安裝了oracle客戶端軟件? – steve

回答

3

我最終引用了ManagedDataAccess.Client而不是Data.Access.Client,它工作正常。

+0

問題在於PATH。選擇託管數據訪問是作弊:) –

2

我在測試項目中遇到了這個錯誤。問題在於我從具有舊PATH的命令行打開Visual Studio。打開新鮮的東西后,它工作。

從代碼中檢查PATH,並確保oracle文件夾位於PATH中。

+1

謝謝。今天遇到這個問題。從Windows菜單開始,而不是光滑的運行,這解決了問題 – quimbo

+1

其實我在VS運行時安裝了驅動程序。重新開放VS幫助,thx! – Bronek

4

PATH設置不是必需的。我將oraons.dll的副本解壓到ORACLE_HOME\bin文件夾中,然後安裝程序開始工作。

通過安裝程序的Oracle安裝程序與xcopy depoyment之間存在差異。我現在不是爲什麼。這兩個裝置具有相同的註冊表設置:

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

DllPath指向ORACLE_HOMEBIN文件夾。這意味着對ORACLE_HOME的文件夾BIN的PATH設置不起作用。客戶端的另一個PATHORACLE_HOME將有所幫助。我認爲這不是必要的。只有將oraons.dll複製到BIN就足夠了。