雖然 DAO (Data Access Objects) 已逐漸被 ADO 取代,但在維護舊項目或學習 VC++ 數據庫編程基礎時仍具參考價值。本文總結三個實戰常見場景的解決方案。
以對話框基礎項目為例,步驟如下:
mydb,基類 CDaoRecordset,選擇正確數據源與表。注意:VC6 無法直接打開 Access 2000 格式,需先另存為 Access 97 格式 (.mdb)。mydb.h 添加 #include "afxdao.h";在對話框頭文件添加 #include "mydb.h"。mydb db;
db.Open();
MessageBox(db.m_answerA); // 假設表中有 answerA 字段
db.Close();
當未使用類向導自動綁定時,需手動完成:
AFX_DATA 區塊添加 mydb* rec;。m_answerA (CString)。rec = new mydb;
rec->Open();
WM_CLOSE:
rec->Close();
delete rec;
UpdateData(FALSE) 將數據推送到控件。修改 mydb 類的 GetDefaultDBName() 虛函數,動態獲取當前工作目錄:
CString mydb::GetDefaultDBName() {
char str[255];
GetCurrentDirectory(255, str);
strcat(str, "\\my.mdb");
return _T(str);
}
此舉使 EXE 與 my.mdb 放同一目錄即可運行,無需絕對路徑配置,極大提升部署靈活性。
DAO 雖老舍,但其類向導集成、Recordset 封裝對初學者理解「記錄集、字段交換、數據綁定」核心概念極有幫助。歡迎交流指正:king_koo@163.net。