2016-11-22 199 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位機後,我的問題。

相關問題