2

私はVSとデータベースが初めてです。私が取り組んでいたプロジェクトは、古いソフトウェアを VB6 から VS 2010 C# にモダライズしようとしています。これには、外部データベースを検索する必要があります。そのため、OracleConnection() を使用してそのデータベースに接続しようとしています。Windows 7 Enterprise で Visual Studio 2010 Express を使用しています。Oracle Data Access Components (最新の 32 ビットである ODAC 11.2 リリース 5) をダウンロードしました。TNSNAMES.ora ファイルと接続文字列の両方が正しく解決されました。

現在、Sql*Plus を使用してデータベースに接続できます。また、古い VB6 バージョンのソフトウェアは、データベースから情報を取得する際にうまく機能します (ODAC を持っておらず、tnsnames.ora を正しくセットアップしていないと、機能しません)。しかし、私の VS C# はそうではありません。接続を開くことができません。エラー メッセージは「ORA-12545: ターゲット ホストまたはオブジェクトが存在しないため、接続に失敗しました」です。また、DB ホスト アドレスを IP アドレスに変更すると、「ORA-12560: TNS: プロトコル アダプタ エラー」が表示されます。

VS 2010 Express IDE に問題があると思います。誰かがそれについて何か考えを持っていますか? ODAC を再インストールしようとしましたが、解決しません。よろしくお願いします。

私のコードは、 c# 2010 Express を使用して Oracle XE に接続する場合とまったく同じです。

更新 -- 解決済み

私はついにこの質問を理解しました。私の場合、これは Global Assembly Cache の DLL に何らかの形で関連しています。私のプロジェクトは、.NET 2.0 用に設計された奇妙な ODAC に対してコンパイルされていることがわかりました。OracleDBAccess の参照をリダイレクトしようとしましたが、役に立ちませんでした。次に、新しいプロジェクトを開始し、参照権を設定してから、そこにすべてのコードをコピーしました。最終的にはうまくいきました。

4

1 に答える 1

0

違いは、SqlPlus は .Net とは異なるデータ プロバイダーを使用して接続することです。.net と oracle が連携するために必要な最小要件について説明しているブログ投稿があります。考慮すべき主なポイントは、正しいデータ プロバイダー (32/64 ビット) を使用していることと、Oracle の bin フォルダーが OS のパス ステートメントにあることを確認することです。

違いは、SqlPlus は .Net とは異なるデータ プロバイダーを使用して接続することです。基本的な要件について説明するブログ投稿があります。

ブログ投稿リンク

-投稿からのテキスト

Oracle から最新の Oracle 11g2 クライアント ソフトウェアをダウンロードします。

注 – 64 ビットのオペレーティングシステムを使用している場合は、必要なビットレベルを確認してください。アプリが特に 32 ビットにコンパイルされている場合は、32 ビットの Oracle クライアントを使用する必要があります。ネイティブで実行するようにコンパイルされている場合は、64 ビットの Oracle クライアント ソフトウェアを使用する必要があります。

  1. zipファイルをディレクトリに解凍します

  2. フォルダーを開き、setup.exe ファイルを管理者として起動します。

  3. ステップ 1/8 で必要なインストールのタイプのカスタム オプションを選択し、[次へ] をクリックします。

  4. ここで、Oracle Data Provider for .NET オプションを選択し、[次へ] をクリックします。

  5. デフォルトのオプションを使用して残りの手順を完了します

  6. 完了したら、次のフォルダーに移動します

    【インストールパス】\product\11.2.0\client_1\network

  7. admin という名前の新しいフォルダーを作成します。

  8. 既存の sqlnet.ora および tnsnames.ora ファイルを管理ディレクトリにコピーします。

  9. .net アプリケーションを使用してインストールをテストするか、このブログで提供されている OracleConnectionTesting ユーティリティのいずれかを使用できます。

Oracle 用の .Net テスト ユーティリティ

于 2013-06-25T03:10:22.707 に答える