次のように、ADOを使用してSQLサーバーデータベースに接続する古いVB6アプリがあります。
Dim cnServer As New ADODB.Connection
cnServer.Provider = "sqloledb"
sConnectString = "Server=" & txtServer.Text & ";" & _
"Database=" & txtDatabase.Text & ";" & _
"User ID=" & txtUserID.Text & ";" & _
"Password=" & txtPassword.Text & ";" & _
"Connect timeout=10"
cnServer.Open sConnectString
...これは常に機能しています。しかし、Oracle 11g データベースに接続するように変更する必要があります。この記事を見つけて、コードを次のように変更しました。
Dim cnServer As New ADODB.Connection
cnVLServer.Provider = "OraOLEDB.Oracle"
sConnectString = "Server=" & txtServer.Text & ";" & _
"Data Source=" & txtDatabase.Text & ";" & _
"User ID=" & txtUserID.Text & ";" & _
"Password=" & txtPassword.Text & ";" & _
"Connect timeout=10"
cnVLServer.Open sConnectString
...しかし、実行すると、3706, Provider cannot be found. It may not be properly installed.
これは私の開発 VM (笑わないでください - まだ Win2K Pro 上にあります) とテスト マシン (Win XP を使用) で発生するというエラーが表示されます。 .
さらに検索すると、oracore11.dll が依存関係にあることがわかったので、Oracle のダウンロード サイトにアクセスし、この DLL を、Windows 関連のコーディング ツールの完全なスイートと思われるものを含む .zip ファイルの一部として取得しました。ただし、この DLL を VB6 実行可能ファイルと同じフォルダーに配置しても、エラーは発生します。DLL を登録しようとすると、別のエラーが生成されます。 The specified module could not be found.
そもそも間違ったパスや解決できない問題でさらにスラッシングする前に、最初にVB6アプリをOracleに接続するための最良/最も簡単な方法をチェックインして確認する必要があると考えました. ここでの私の目標は、この VB6 アプリを可能な限り移植可能にし、事前にインストールされたパッケージを動作させる必要がなく、依存関係の最小限のセットを .exe 自体で簡単に渡すことです。(参考までに、この VB6 アプリは商用配布された製品ではなく、職場の私自身の部門内で内部的に使用されるテスト ツールです。フラット ファイルの固定幅データを取得し、それを解析してから、それを挿入する SQL コードを生成します。 DB。)