2016-11-22 9 views
0

私はVC++でOracle DBに接続してそのデータにアクセスするアプリケーションを開発しました。 DSNを作成し、PATH、ORACLE_HOME、TNS_ADMINなどのいくつかの環境変数をVC++コードでプログラムで設定する必要があります。私は必要なレジストリエントリを更新しました。 32bit Oracle Instant Clientをマシンにインストールしました。Microsoft - ODBCドライバマネージャ - データソース名が見つかりませんでした。デフォルトドライバが指定されていません

http://download.oracle.com/otn/nt/instantclient/121020/instantclient-basic-nt-12.1.0.2.0.zip http://download.oracle.com/otn/nt/instantclient/121020/instantclient-odbc-nt-12.1.0.2.0.zip

私は遵守し、Windows 7 64ビットマシン上のターゲットプラットフォームとしてWin32のオプションを使用してアプリケーションのexeファイルを構築しています。このexeはWindows 7 64ビットマシンで正常に動作し、SQLDriverConnect()を使用してDB接続を正常に行うことができます。

しかし、32ビットOracle Instant Clientのインストール、PATH、ORACLE_HOME、TNS_ADMINなどの環境変数の設定など、Windows 32ビットマシンで同じ設定を行う場合、必要なレジストリエントリを更新し、同じアプリケーションを実行してみてください。

[Microsoft] - [ODBC Driver Manager]データソース名が見つかりません。デフォルトのドライバが指定されていません。

解決手順をご提案ください。

+0

ODBCのドライバ名は何ですか?両方のインストールで同じ名前(例:Oracle in OraClient12g_home1')ですか? –

答えて

0

ODBCデータソースはどこで定義しましたか?あなたは、64ビットの使用%SYSTEMROOT%\system32\odbcad32.exe(通常c:\windows\system32\odbcad32.exe

用と32ビットの使用%SYSTEMROOT%\SysWOW64\odbcad32.exe(通常c:\Windows\SysWOW64\odbcad32.exe)すべてのあなたの応答を

+0

私の64ビットマシンでは、ODBCデータソースはC:\ Windows \ SysWOW64にあり、32ビットマシンではODBCデータソースはc:\ windows \ system32にあります。 )をコードに入れます。 DSN =%s; UID =%s; PWD =%sのようなconnstringを使用してコード内にDSNを作成しています。 – ModeLearner

+0

これは私の64ビットマシンで正常に動作します。 – ModeLearner

0

おかげで別々に

これを行う必要があります。

とにかく問題を修正しました。

前述のとおり、DSNを作成してDSNのレジストリエントリをプログラムで更新しているため、64ビットマシンではレジストリパスが異なり、32ビットマシンではレジストリパスが異なる必要があります。 64ビットマシン上

、DSNレジストリパスは次のようになります

[HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432NODE \ ODBC \ ODBC.INI]

32ビットマシン上で、DSNレジストリパスは次のようになります

[HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI]

これは、32ビットマシンのレジストリ内の新しいパスにDSNレジストリエントリを作成した後で私の問題を解決しました。

関連する問題

 関連する問題