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

透過 DAO 直接讀寫 Access 檔案範例

     編輯:關於VC++

優勢

比 ODBC 版 Excel 更簡單,可混用 SQL 與 DAO 類別函式,彈性更高。

執行畫面

標頭檔

#include 

變數宣告

CDaoDatabase db;
CDaoRecordset rs(&db);

建立資料庫、資料表並寫入(混用 SQL 與 DAO)

void OnWrite() {
    CString path = GetAppPath() + "\\Demo.mdb";
    if (!FileExists(path)) {
        db.Create(path); // 建立 .mdb
        db.Execute("CREATE TABLE DemoTable(Name VARCHAR(20), Age VARCHAR(3))");
        rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT * FROM DemoTable");

        // SQL 寫入
        db.Execute("INSERT INTO DemoTable (Name,Age) VALUES ('徐景周',26)");
        // DAO 寫入
        rs.AddNew(); rs.SetFieldValue("Name","徐志慧"); rs.SetFieldValue("Age","21"); rs.Update();
        rs.AddNew(); rs.SetFieldValue("Name","郭徽");   rs.SetFieldValue("Age","27"); rs.Update();

        rs.Close(); db.Close(); AfxMessageBox("寫入成功");
    } else AfxMessageBox("檔案已存在");
}

讀取並顯示

void OnRead() {
    COleVariant var; var.ChangeType(VT_BSTR);
    CString path = GetAppPath() + "\\Demo.mdb";
    db.Open(path);
    rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT * FROM DemoTable");
    m_List.ResetContent();
    while (!rs.IsEOF()) {
        rs.GetFieldValue("Name", var); CString name = (LPCSTR)var.pbstrVal;
        rs.GetFieldValue("Age", var);  CString age  = (LPCSTR)var.pbstrVal;
        m_List.AddString(name + " --> " + age);
        rs.MoveNext();
    }
    rs.Close(); db.Close();
}

關鍵提示

  • AFX_DAO_USE_DEFAULT_TYPE 讓 MFC 自動選擇資料表/動態集/快照型記錄集
  • COleVariant 需先 ChangeType(VT_BSTR) 才能安全取 pbstrVal
  • DAO 3.5/3.6 不支援 Access 2000+ 格式,需另存為舊版
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved