• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NET Oracle接続 32、64bit)

VB.NETにおけるOracle接続方法とは?

このQ&Aのポイント
  • VB.NET 2010でOracle11gに接続するプログラムを作成する際の接続方法について調査しました。
  • Oracle Clientの32bit版と64bit版の違いや、接続文字列の設定方法に関して詳しく説明しています。
  • 現状では32bitと64bitのOracle Clientが両方必要な状況ですが、最適な解決策について考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

先ず、大前提として32bitプログラムのプロセス空間には 32bitのDLLしかロードできません。同様に64bitのそれは 64bitのDLLしかロードできません。 OLEの実装にはDLL型とEXE型があり、前者は同一の プロセス空間にあるため、32bitプログラムからは32bitの、 64bitプログラムからは64bitのDLL実装でなければ動き ません。 OLEをインスタンス化する時に使うクラス名はレジストリに 登録されており、最終的に処理を担うDLLかEXEのパスに 行き着くようになっています。互換性を保つため、クラス名は 以前から変わっていませんし、32/64の区別もありません。 OracleのOLEはDLL型実装なので、32bitか64bitのどちらか 一方しか処理できません。 ここでは”OraOLEDB.Oracle”が示す最終パスは後から インストールした方に切り替えられているはずです。 サーバが64bitなら、64bit版で統一すべきでしょう。 32bit版をアンインストールして、もう一度、64bit版を インストールした方がよいでしょう。 そして、コンソールプログラムの方を64bit版でリビルドする ことを薦めます。Visual Studio 2012ならどちらでもビルド できます。

goram
質問者

お礼

ご指摘の通りでした。 32bit版をアンインストール(Deinstall.batを使用)すると、コンソールアプリだけでなく、 WEBアプリも接続できなくなりました。 64bit版も同様にアンインストールし、再度インストールしました。 コンソールアプリケーションをサーバーのVisualStudioで64bitでビルドし 接続できました。 WEBアプリでも接続できました。 現在は64bit版だけで動く状態になりました。 ありがとうございました。

goram
質問者

補足

基礎からの詳しいご回答ありがとうございます。 非常に勉強になります。 まず64bitでビルドする方法を改めて調べて、それができたら 64bitのOracle Clientの状態だけにして試してみたいと思います。

その他の回答 (1)

回答No.1

.NETのコンソールプログラムは64bitビルドです?

goram
質問者

お礼

もういちど64bitでビルドするよう調べてみます。 ありがとうございます。

goram
質問者

補足

ご回答ありがとうございます。 開発機がWin7の32bitなので、ビルドも32bitです。 それも思い当たって、サーバのVisualStudioで一応64bitビルドをしてみたつもりでしたが、 改善できませんでした。

関連するQ&A