解决“The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception ”异常...
?上次做了一個(gè)小的EXE應(yīng)用程序,發(fā)給老大后,昨天老大告訴我程序在服務(wù)器端運(yùn)行會(huì)拋出異常。
? 今天我從早上上班一直弄到寫(xiě)這篇BLOG,才解決掉。
? 設(shè)置斷點(diǎn)進(jìn)去跟蹤發(fā)現(xiàn)是在Conncetion.open()時(shí),會(huì)拋出異常,異常顯示
? 提供程序與此版本的ORACLE客戶(hù)機(jī)不兼容
??服務(wù)器版本:
?
?? 異常如下:
??
詳細(xì)錯(cuò)誤清單:(我用GG翻譯了)
?主要是不能連接ORACLE數(shù)據(jù)庫(kù),連接DLL用的是 版本為2.112.1.2的ORACLE.DATAACCESS.DLL,在我自己的電腦上運(yùn)行沒(méi)有問(wèn)題,在服務(wù)器端運(yùn)行就會(huì)拋出異常。
?為了解決問(wèn)題我嘗試了用更新的版本。但是他還是會(huì)拋出同樣的問(wèn)題。
?最后我想起了.NET中自帶有微軟的ORACLE訪(fǎng)問(wèn)借口,于是我就用了SYSTEM.DATA.ORACLECLIENT這個(gè)組件,問(wèn)題得到了解決。
?部分代碼:(注釋的就是調(diào)用的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 }
?詳細(xì)情況我現(xiàn)在也還很糊涂,希望對(duì)有出現(xiàn)類(lèi)似情況的同志有所幫助。
?嗯,VS工具是2008中文版!
?
??
轉(zhuǎn)載于:https://www.cnblogs.com/ganqiyin/archive/2012/07/10/2584881.html
總結(jié)
以上是生活随笔為你收集整理的解决“The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception ”异常...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [Android]ListView控件之
- 下一篇: 计算矩阵连乘积(动态规划)