4

私はこれを長い間探していました.Oracleデータベースに接続する必要があるC#を使用してWindowsフォームアプリを開発しました.このアプリは、Windows XPおよびWindows 7を使用する多くのPCで使用されます.長い研究の結果、 Oracle アクセスに OBP.net を使用しますが、すべての PC に Oracle クライアントをインストールできないという問題があります

OCI Instant Client Data Shared Library
    oraociicus10.dll (Basic-Lite version)
    oraociei10.dll (Basic version)
Client Code Library
    oci.dll
Security Library
    orannzsbb10.dll
OCCI Library
    oraocci10.dll

しかし、アプリをリリースすると、Oracle データベースに接続されません。Oracle クライアントがインストールされていない PC で Windows フォーム アプリを Oracle データベースに接続する方法を教えてください。

編集:

DataTable dt = new DataTable();
OracleConnection Oracle_connection = new OracleConnection();
Oracle_connection.ConnectionString = con;
Oracle_connection.Open();

デバッグモードで接続タイムアウトがOracle_connection.Open();発生し、接続文字列が次のようになっているため、TNSNAMES.ORAを使用しません

Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.2.54)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = PRD))) ;User Id=catering;Password=catering;"`

Windows 7 PC で動作するコードを公開しようとしましたが、Windows XP では動作しませんでした System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException The provider is not compatible with the version of Oracle client at Oracle.DataAccess.Client.OracleInit.Initialize()

それがWindowsに関連しているか、いくつかのDLLが見つからないかはわかりません

4

3 に答える 3

2

完全に管理された .net コネクタ (別名 ODP.NET マネージド ドライバー) もあります。

.NET 4.0 フレームワークがインストールされた Windows 8 および Windows XP SP3 でテストしましたが、すべて期待どおりに動作しました。デプロイには、1 つの dll (Oracle.ManagedDataAccess.dll) のみが必要です。これは 6 MB あります (ほぼ 40 MB の Instant Client lite と比較して)。

更新: おそらくマネージド Oracle ドライバーを使用する最善の方法は、NuGet ( ODP.NET @ nuget )を使用することです。

于 2013-04-04T20:57:35.770 に答える
0

ODP.net は、バージョン番号の混在にうるさいです。エラーメッセージ:

System.TypeInitializationException: 'Oracle.DataAccess.Client.OracleConnection' の型初期化子が例外をスローしました。---> Oracle.DataAccess.Client.OracleException プロバイダは、Oracle.DataAccess.Client.OracleInit.Initialize() で Oracle クライアントのバージョンと互換性がありません

どこかで間違ったクライアント DLL バージョンを選択していることを示します。Oracle と Visual C# 2010 で開発を行ったとき、次の場所から ODP.NET ライブラリをダウンロードしました。

http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html

次に、使用する予定の Oracle のバージョンに適したバージョンを取得し、それらの DLL をプロジェクトで使用しました。ただし、再配布の制限が何であるかはわかりません。

于 2013-03-06T21:39:02.703 に答える
0

このスレッドを見てください:プロバイダは Oracle クライアントのバージョンと互換性がありません

そこにリストされているDLLは私のために仕事をしました(すべてexeと同じディレクトリにあります)。

于 2015-02-05T19:41:44.413 に答える