程序在使用ODBC方式連接數據庫時發生錯誤:
ERROR [IM002] [Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序。
什么原因造成的呢?
本人使用《Delphi+SQL Server數據庫應用實例完全解析》 附帶例程測試,發現不能連接數據庫。
提示通信模塊驅動問題。
環境:win7_x86 + SQL Server2000 + Delphi 7.
解決方法:
SQL Server 2000
1. 通過數據庫->所有任務->還原數據庫。
2. 安全性設置->登錄-> 設置默認數據為 xqwy。
ODBC
1. 打開控制面板-> ODBC 數據源管理器
2. 添加-> 選擇 SQL Server
3. Name: 數據庫名稱 Description: 數據庫描述 Server:計算機名稱
4. 下一步 保存 確定。
5. 測試: Delphi 7 創建ADOCon 控件,雙擊控件。
6.Use Connection String -> build
7. 連接: 使用數據源名稱:xqwy
用戶名:sa
密碼:sa
測試連接->測試連接成功。
Delphi7 ADO 代碼:config.pas
1 unit config; 2 3 interface 4 uses 5 SysUtils,forms; 6 type 7 TXQWYConfig=class //定義連接管理類 8 public 9 class function getConnectionStr:string; //定義類的方法,得到連接字符串 10 end; 11 implementation 12 class function TXQWYConfig.getConnectionStr; 13 begin 14 //result:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=XQWY;Data Source=(local)'; 15 result:='Provider=MSDASQL.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=XQWY;Data Source=xqwy'; 16 end; 17 end.
================================ 參考資料 ==================================
首先說明下程序的運行環境。操作系統是win8 64位的,.net 4.0的程序。
進展一,打開控制面板的“數據源”工具,在“驅動程序”中並未發現對應的驅動程序名稱,於是,下載安裝64位ODBC驅動程序,並根據驅動程序列表中的驅動名稱,修改了對應的odbc連接字符串。測試后依然提示以上錯誤。甚至根據高手指點,使用了64位系統專用的odbc連接字符串,依然錯誤。
進展二,突然想到會不會和.net程序有關?因為部分控件兼容性問題,程序雖然運行在64位操作系統下,但實際上是以32位方式運行。這個會不會是問題的根本呢?嘗試下載32位的odbc驅動,並安裝。測試連接,成功!
原因分析:結合之前看到的現象(win8 64位系統中的“設置odbc數據源”工具居然分為32位和64位兩個程序),猜想原因:win8 64位系統中的odbc驅動分為32位和64位分開管理,32位方式運行的程序只會調用32位的odbc驅動,同理,64位的程序只能調用64位的odbc驅動。