原始碼中 _bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=lpstrName")); 將變數 lpstrName 當作字面字串,導致連接失敗。必須用 CString::Format 正確拼接檔案路徑。
CString strConn;
strConn.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"), lpstrName);
_bstr_t bstrConn(strConn);
hr = m_pConnection->Open(bstrConn, _T(""), _T(""), adModeUnknown);
CFileDialog 取得完整路徑存入 lpstrName(CString 型別)。Format 產生含實際路徑的連接字串。_bstr_t 轉換後傳給 Open。.accdb) 需用 Provider=Microsoft.ACE.OLEDB.12.0。adOpenDynamic + adLockOptimistic 需資料庫支援;若報錯改用 adOpenStatic + adLockReadOnly。完整 VC++ ADO 連接 Access 範例見:VC++ ADO 連接 Access 資料庫詳解。