|
分類:[.NET 全般]
C#,VS2010で、Oracleに接続するプログラムを書いています。 その中で.net標準ライブラリ("System.Data.OracleClient")で接続後に、ODPで接続すると なぜか、TypeInitializationExceptionが発生してしまいます。
何か処理が抜けているのでしょうか。 ちなみに、ODPのあとに、.net標準ライブラリで実行してもエラーにはなりません。
以下、再現ソースです。
// プロバイダーの取得 DbProviderFactory provider = DbProviderFactories.GetFactory("System.Data.OracleClient"); ★.net標準ライブラリ
try { DbConnection conn = provider.CreateConnection(); conn.ConnectionString = "Data Source=xxx;User ID=ユーザーID;Password=パス"; conn.Open();
DbTransaction tran = conn.BeginTransaction();
tran.Commit(); tran.Dispose(); conn.Close(); conn.Dispose(); } catch (SystemException e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); }
// プロバイダーの取得 DbProviderFactory provider2 = DbProviderFactories.GetFactory("Oracle.DataAccess.Client"); ★ODP
try { DbConnection conn = provider2.CreateConnection(); ←★ここでエラーが発生 conn.ConnectionString = "Data Source=xxx;User ID=ユーザーID;Password=パス"; conn.Open();
DbTransaction tran = conn.BeginTransaction();
tran.Commit(); conn.Close(); conn.Dispose(); } catch (SystemException e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); }
'Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしまし た。 場所 Oracle.DataAccess.Client.OracleConnection..ctor() 場所 Oracle.DataAccess.Client.OracleClientFactory.CreateConnection() 場所 ConsoleApplication1.Program.Main(String[] args) 場所 D:\Listrante\Tool\D ebugYou\ConsoleApplication1\ConsoleApplication1\Program.cs:行 39
ハンドルされていない例外: System.TypeInitializationException: 'Oracle.DataAccess .Client.OracleConnection' のタイプ初期化子が例外をスローしました。 ---> Oracle.D ataAccess.Client.OracleException Oracleクライアントのバージョンと互換性のないプ ロバイダです。 場所 Oracle.DataAccess.Client.OracleInit.Initialize() 場所 Oracle.DataAccess.Client.OracleConnection..cctor() --- 内部例外スタック トレースの終わり --- 場所 Oracle.DataAccess.Client.OracleConnection.Dispose(Boolean disposing) 場所 System.ComponentModel.Component.Finalize()
Oracle 10g Enterprise Edition Release 10.1.0.2.0 ODPのバージョンは、2.102.2.20
|