22

Oracle Data Provider for .NET を使用するアプリケーションを開発しました。アプリケーション ファイル (.exe) と ODP ライブラリ (Oracle.DataAccess.dll) を、Oracle クライアントと ODP.NET がインストールされていない別のコンピューターにコピーします。アプリケーションを実行すると、「Oracle.DataAccess.Client.OracleConnection の型初期化子が例外をスローしました」というエラー メッセージが表示されました。

*****************Exception Text***************
System.TypeInitializationException: The type initlializer for 'Oracle.DataAccess.Client.OracleConnection at Oracle.DataAccess.Client.OracleConnection..cctor()
  --- End of inner exception stack trace ---
  at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
  ...

アプリケーションを実行するコンピューターに ODP.NET および Oracle クライアントをインストールする必要がありますか? はいの場合、それらをインストールする必要はありませんが、アプリケーションを実行できる他の方法はありますか?

ありがとうございました

4

7 に答える 7

7

Oracle Data Provider for .NET(Oracle製)と.NET Framework Data Provider for Oracle (Microsoft製)の両方で、マシンにOracleClientがインストールされている必要があります。

于 2009-05-27T07:05:14.003 に答える
6

わかりました。同じプロセスを使用する他のアプリケーションが機能していることを確認できたら、新しいアプリケーションでは、データ アクセス参照と 3 つの dll ファイルがあることを確認してください...

ODAC1120320Xcopy_32bitを Oracle サイトからダウンロードしました。

http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

参考:Oracle.DataAccess.dll (ODAC1120320Xcopy_32bit\odp.net4\odp.net\bin\4\Oracle.DataAccess.dll)

プロジェクトに次の 3 つのファイルを含めます。

  • oci.dll (ODAC1120320Xcopy_32bit\instantclient_11_2\oci.dll)
  • oraociei11.dll (ODAC1120320Xcopy_32bit\instantclient_11_2\oraociei11.dll)
  • OraOps11w.dll (ODAC1120320Xcopy_32bit\odp.net4\bin\OraOps11w.dll)

正しい参照とファイルを使用して別のアプリケーションを作成しようとすると、そのエラー メッセージが表示されます。

修正: 3 つのファイルすべてを強調表示し、[出力にコピー] = 新しい場合はコピーを選択しました。dll の 1 つが 100MB を超えているため、新しい場合はコピーしました。更新を行っても、それらのファイルは再度コピーされません。

レジストリエラーも発生しましたが、これで修正されました。

public void updateRegistryForOracleNLS()
{
    RegistryKey oracle = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\ORACLE");
    oracle.SetValue("NLS_LANG", "AMERICAN_AMERICA.WE8MSWIN1252");
}

Oracle nls_lang リストについては、次のサイトを参照してください: https://docs.oracle.com/html/B13804_02/gblsupp.htm

その後、すべてがスムーズに機能しました。

お役に立てば幸いです。

于 2013-05-29T20:12:17.337 に答える
2

Oracleクライアントが必要です:(2016年以前)http://www.oracle.com/technology/oramag/oracle/08-nov/o68odpnet.html

(2019年頃)「OracleInstantClient」に名前が変更されましたhttps://www.oracle.com/database/technologies/instant-client/downloads.html

于 2009-05-27T07:27:02.643 に答える
2

これらのクラスを機能させるには、Oracle クライアント ドライバーをインストールする必要があります。

Oracle を処理できるサードパーティの接続フレームワークが存在する可能性があります。おそらく、他の誰かが特定のものを知っている可能性があります。

于 2009-05-27T06:46:28.233 に答える