2016-11-22 271 views
0

我已经开发了一个VC++中的应用程序来连接Oracle DB并访问其数据。它需要创建DSN,并且需要设置一些环境变量,如PATH,ORACLE_HOME,TNS_ADMIN等,这些变量是我在VC++代码中编程完成的。我已经更新了必需的注册表项。我在我的机器上安装了32位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

我已遵守并建立使用Win32选项作为目标平台的应用程序exe文件在Windows 7 64位机。这个exe在Windows 7 64位机器上工作正常,我能够使用SQLDriverConnect()成功建立数据库连接。

但是,当我在Windows 32位计算机上进行相同的安装时,例如安装32位Oracle即时客户端,设置一些环境变量(如PATH,ORACLE_HOME,TNS_ADMIN等),更新所需的注册表项并尝试运行相同的应用程序exe位机),这给了以下错误:

[微软] - [ODBC驱动程序管理器]数据源名称未找到和指定默认驱动程序。

请建议解决步骤。

+0

ODBC中的驱动程序名称是什么?这两个安装是否是相同的名称(例如,OraClient12g_home1中的Oracle)? –

回答

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下我设置像PATH环境变量,TNS_HOME,ORACLE_HOME使用_putenv( )在代码中。我创建使用CONNSTRING像DSN =%S在代码DSN; UID =%S; PWD =%S。 – ModeLearner

+0

而这在我的64位机器上正常工作。 – ModeLearner

0

感谢所有为您的答复。

无论如何,我已经解决了这个问题。

正如我刚才所说,我创建DSN,并更新注册表项DSN程序,注册表路径应该是32位机64位机的不同而不同。

在64位机,DSN注册表路径将是:

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

在32位机,DSN注册表路径将是:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI]

该解决的新路径作出DSN注册表项在注册表中的32位机后,我的问题。

相关问题