2014-01-06 67 views
10

當我嘗試連接到我的C#應用​​程序的Oracle數據庫和我嘗試點擊一個按鈕,我得到這個錯誤:爲「Oracle.DataAcces.Client.OracleConnection」的類型初始值引發了異常

The type initializer for 'Oracle.DataAcces.Client.OracleConnection' threw an exception

我來訪問數據庫代碼:

 static string column; 
     static string OracleServer = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=something)(HOST=something)(PORT=something)) (CONNECT_DATA=(SERVICE_NAME=name)));User Id=something;Password=something;"; 

     public void read() 
     { 
      try 
      { 
       var conn = new OracleConnection(OracleServer); 
       conn.Open(); 
       OracleCommand cmd = new OracleCommand("select * from t1", conn); 
       OracleDataReader reader = cmd.ExecuteReader(); 

       while (reader.Read()) 
       { 
        var column1 = reader["vermogen"]; 
        column = (column1.ToString()); 
        listBox1.Items.Add(column); 
       } 
       conn.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

     } 

現在我使用的參考Oracle.DataAccess和代碼:using Oracle.DataAccess.Client;

的應用程序是一個arcg是在應用程序中添加的,我將它轉換爲表單應用程序,並且它連接到數據庫。但我必須讓它在加入應用程序中工作。

我從來沒有遇到過這個錯誤,我沒有經歷過Oracle數據庫,我想知道是什麼導致了這個錯誤?當我運行應用程序時,我沒有得到任何錯誤。但是當我點擊應用程序的用戶界面的按鈕時,我得到這個錯誤。

我應該怎麼做才能使錯誤消失以及導致錯誤的原因?

回答

3

這是Oracle dll內部的錯誤。我的猜測是你安裝了.NET dll,但沒有在你的系統上安裝Oracle客戶端。你能通過SQLPlus客戶端軟件連接到Oracle嗎?如果未安裝,則需要安裝Oracle客戶端軟件。

+1

我可以通過sql開發人員連接。但是當我嘗試點擊連接標識符時,我得到:狀態:失敗 - 測試失敗:libocijdbc的不兼容版本[Jdbc:112020,Jdbc-OCI:112030 – Loko

+0

因此,您可以*不通過sql開發人員連接?您需要安裝Oracle客戶端軟件!你的電腦上有SQLPlus嗎?如果沒有,這是一個很好的指標,表明您沒有安裝Oracle客戶端。 – nvoigt

+0

以及我可以連接網絡別名,但不能通過連接標識符。我會嘗試sqlplus。 – Loko

3

更改您的項目屬性。 構建部分,平臺:x86

+1

解釋爲何解決OP問題的一個小解釋可能會有幫助。 – rivarolle

+0

我有類似的問題,但更改爲平臺:任何CPU是我的解決方案。 – Paul

+0

用於oracle訪問的dll可用於32或64個平臺。這可能是混淆的根源。 – Caveman

0

由於您沒有Oracle Client的管理員權限。在App.config文件補充一點:

<IPermission class="Oracle.DataAccess.Client.OraclePermission, 
Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, 
PublicKeyToken=89b483f429c47342" version= "1" Unrestricted="true"/> 
+0

將.config文件中的下的此處添加? –

5

這也可以,即使你設置參考的「特定版本」屬性發生,如果你的Oracle客戶端DLL版本號爲輕度從你在Visual Studio和參考不同假。

相關問題