2016-11-22 3 views
0

Ich habe in VC++ eine App entwickelt, um eine Verbindung mit Oracle DB herzustellen und auf seine Daten zuzugreifen. Es erfordert, dass ein DSN erstellt wird und einige Umgebungsvariablen wie PATH, ORACLE_HOME, TNS_ADMIN usw. gesetzt werden, die programmgesteuert in meinem VC++ - Code ausgeführt wurden. Ich habe die erforderlichen Registrierungseinträge aktualisiert. Ich habe den 32bit Oracle Instant Client auf meinem Rechner installiert.Microsoft - ODBC-Treibermanager - Datenquellenname nicht gefunden und kein Standardtreiber angegeben

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

Ich habe erfüllt und gebaut, um die Anwendung exe als Zielplattform unter Verwendung von Win32-Option auf Windows 7 64-Bit-Maschine. Diese exe funktioniert gut auf Windows 7 64-Bit-Maschine und ich bin in der Lage, die DB-Verbindung erfolgreich mit SQLDriverConnect().

Aber wenn ich das gleiche Setup auf Windows 32 Bit-Maschine wie 32bit Oracle Instant Client, einige Umgebungsvariablen wie PATH, ORACLE_HOME, TNS_ADMIN, etc., die erforderlichen Registrierungseinträge aktualisieren und versuchen, die gleiche Anwendung exe (auf 64 verwendet) Bit-Maschine), dies gibt folgenden Fehler:

[Microsoft] - [ODBC-Treiber-Manager] Datenquellenname nicht gefunden und keine Standardtreiber angegeben.

Bitte schlagen Sie die Lösungsschritte vor.

+0

Wie lautet der Treibername in ODBC? Ist für beide Installationen derselbe Name (z. B. Oracle in OraClient12g_home1)? –

Antwort

0

Wo haben Sie Ihre ODBC-Datenquellen definiert? Sie müssen diese

für 64-Bit-Anwendung %SYSTEMROOT%\system32\odbcad32.exe (typischerweise c:\windows\system32\odbcad32.exe)

und für 32-Bit verwenden %SYSTEMROOT%\SysWOW64\odbcad32.exe (typischerweise c:\Windows\SysWOW64\odbcad32.exe)

+0

Auf meinem 64-Bit-Rechner befindet sich die ODBC-Datenquelle unter C: \ Windows \ SysWOW64 und auf meinem 32-Bit-Rechner befindet sich die ODBC-Datenquelle unter c: \ windows \ system32. Ich setze Umgebungsvariablen wie PATH, TNS_HOME, ORACLE_HOME mit _putenv () in Code. Ich erstelle DSN in Code mit Constring wie DSN =% s; UID =% s; PWD =% s. – ModeLearner

+0

Und das funktioniert gut auf meiner 64-Bit-Maschine. – ModeLearner

0

Dank allen für Ihre Antwort separat zu tun.

Wie auch immer ich das Problem behoben habe.

Wie bereits erwähnt, dass ich DSN erstellen und Registrierungseinträge für DSN programmgesteuert aktualisieren, sollte Registrierungspfad für 64-Bit-Maschine und für 32-Bit-Maschine anders sein.

Auf 64-Bit-Maschine, DSN-Registrierungspfad wäre:

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

Auf 32-Bit-Maschine, DSN-Registrierungspfad sei:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI]

Das löste mein Problem, nachdem DSN-Registrierungseinträge auf neuen Pfad in der Registrierung für 32-Bit-Maschine gemacht.

Verwandte Themen