解決“The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception ”異常


 上次做了一個小的EXE應用程序,發給老大后,昨天老大告訴我程序在服務器端運行會拋出異常。

  今天我從早上上班一直弄到寫這篇BLOG,才解決掉。

  設置斷點進去跟蹤發現是在Conncetion.open()時,會拋出異常,異常顯示

  提供程序與此版本的ORACLE客戶機不兼容

  服務器版本:

 

   異常如下:

  

詳細錯誤清單:(我用GG翻譯了)

 

 主要是不能連接ORACLE數據庫,連接DLL用的是 版本為2.112.1.2的ORACLE.DATAACCESS.DLL,在我自己的電腦上運行沒有問題,在服務器端運行就會拋出異常。

 為了解決問題我嘗試了用更新的版本。但是他還是會拋出同樣的問題。

 最后我想起了.NET中自帶有微軟的ORACLE訪問借口,於是我就用了SYSTEM.DATA.ORACLECLIENT這個組件,問題得到了解決。

 部分代碼:(注釋的就是調用的ORACLE.DATAACCESS.DLL組件的方法)

View Code
 1  protected DataSet GetData()
 2         {
 3 
 4             //Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(connstr);
 5             System.Data.OracleClient.OracleConnection conn = new OracleConnection(connstr);
 6             try
 7             {
 8                 conn.Open();
 9                 //Oracle.DataAccess.Client.OracleCommand com = conn.CreateCommand();
10                 OracleCommand com = conn.CreateCommand();
11                 com.CommandText = "select * from DL_GOVT_NOTICE_INFO";//"select * from DL_GOVT_NOTICE_EXP_HIST";
12                 //Oracle.DataAccess.Client.OracleDataAdapter apter = new Oracle.DataAccess.Client.OracleDataAdapter(com);
13                 OracleDataAdapter apter = new OracleDataAdapter(com);
14                 DataSet ds = new DataSet();
15                 apter.Fill(ds);
16                 apter.Dispose();
17                 conn.Dispose();
18                 return ds;
19             }
20             catch (Exception ex)
21             {
22                 this.LabShowInfo.Text = "Error: " + ex.Message;
23                 conn.Close();
24                 return null;
25             }
26            
27         }


 詳細情況我現在也還很糊塗,希望對有出現類似情況的同志有所幫助。

 嗯,VS工具是2008中文版!

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM