使用 SQLConfigDataSource 配置 Access ODBC 數據源時,換電腦運行報「不是有效的路徑」,經典的部署環境差異問題。
SQLConfigDataSource(NULL, ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=Xus\0"
"Description=Hotel\0"
"FileType=Access\0"
"DBQ=data\Xus.mdb, CDatabase::noOdbcDialog"); // 相對路徑
DBQ=data\Xus.mdb 依賴進程的「當前工作目錄」。雙擊啟動、命令行啟動、服務啟動、快捷方式啟動,工作目錄可能完全不同。
修復:改用絕對路徑,或從配置文件/註冊表/命令行參數讀取數據庫絕對路徑拼接。
// 獲取 exe 所在目錄拼接
CString exePath = GetModulePath(); // 需自行實現
CString dbPath = exePath + _T("\\data\\Xus.mdb");
VC++ Redistributable 且 MFCxx.dll 在 PATH 中。報錯「其它電腦無法運行」多半是動態鏈接但未安裝運行庫。建議發布版改用靜態鏈接 MFC,或製作安裝包自動安裝 VC++ 運行庫。
Microsoft Access Driver (*.mdb));64 位程序需 64 位驅動(Microsoft Access Driver (*.mdb, *.accdb))。修復:安裝 Microsoft Access Database Engine(選對 x86/x64)。