首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC++

DAO 數據庫編程實戰經驗三則:添加支持、手工綁定、路徑遷移

     編輯:VC++

前言

雖然 DAO (Data Access Objects) 已逐漸被 ADO 取代,但在維護舊項目或學習 VC++ 數據庫編程基礎時仍具參考價值。本文總結三個實戰常見場景的解決方案。

一、為現有項目添加 DAO 數據庫支持

以對話框基礎項目為例,步驟如下:

  1. 類向導生成 Recordset 類:類名 mydb,基類 CDaoRecordset,選擇正確數據源與表。注意:VC6 無法直接打開 Access 2000 格式,需先另存為 Access 97 格式 (.mdb)。
  2. 頭文件包含:在 mydb.h 添加 #include "afxdao.h";在對話框頭文件添加 #include "mydb.h"。
  3. 測試代碼:按鈕響應中實例化並打開:
    mydb db;
    db.Open();
    MessageBox(db.m_answerA); // 假設表中有 answerA 字段
    db.Close();

二、手工為控件添加靜態綁定

當未使用類向導自動綁定時,需手動完成:

  1. 聲明指針成員:在對話框 AFX_DATA 區塊添加 mydb* rec;。
  2. 類向導添加控件變量:為 Edit 控件添加 m_answerA (CString)。
  3. 構造函數初始化:
    rec = new mydb;
    rec->Open();
  4. 關閉銷毀:響應 WM_CLOSE:
    rec->Close();
    delete rec;
  5. 手動更新界面:DAO 靜態綁定不自動刷新,需調用 UpdateData(FALSE) 將數據推送到控件。

三、確保程序可攜帶運行(數據庫與 EXE 同目錄)

修改 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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved