剛好手頭項目解決了ADO連接Oracle數據庫的問題,記錄下來,防止忘記。
項目情況:用32位環境完成算法動態庫,結果后來需要升級到64位環境,由64位的軟件來調用,則在64位設置下生成算法動態庫,發現數據庫連接失敗。數據庫使用的是Oracle10,而連接技術使用的是比較熟悉的ADO。
1.首先懷疑的是ADO預編譯所引用的msado15.dll版本問題,找來了64位msado15.dll,一樣重現問題。
2.懷疑是連接語句依靠的\network\admin\tnsnames.ora文件不對,所以在程序中寫死IP和端口,仍然重現問題。
其間忙於其他項目,只有用32位代替跑着,將其磕置。結果意外發現了64位在兩位同事的電腦上能順利運行,但在有些電腦上又出問題。所以確定為系統環境的問題,最終定位到ODAC。
問題最后解決了,但是還是未能完全脫離配置
1.連接語句寫成這樣,避免依賴tnsnames.ora文件
Provider=OraOLEDB.Oracle.1;Password=密碼;Persist Security Info=True;User ID=用戶名;\
Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521)) )(CONNECT_DATA = (SID = 數據庫)))\"
其中可以將用戶名、密碼、數據庫ID、IP、端口這些提出來寫成配置文件,方便更改。
2.安裝對應的ODAC,64位的下載地址http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html。相對來說,32位的ODAC是EXE安裝文件,簡單粗暴,直接自動安裝好一切,所以當時沒有出問題。64位的ODAC驅動是由Oracle官方提供的XCOPY版本,安裝過程參考微軟官方http://support2.microsoft.com/kb/2831123/zh-tw。
(1)解壓XCOPY
(2)用命令行CD到(1)的目錄下
(3)命令行運行其中的install.bat文件:install.bat all c:\oracle\ODAC_64 odac
(4)C盤出現目錄c:\oracle\ODAC_64,進行系統環境配置:path里面增加C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin
(5)完成
最后,這樣的配置在一台機器上出現了報錯的問題,發現是由於該機器上安裝的東西過多,path環境混亂,Oracle版本指向不明,所以將C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin這個路徑放到path屬性的最前面即可。