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

EVC 3.0 嵌入式資料庫開發入門:CCeDBDatabase 實戰指南

     編輯:關於VC++

Windows CE 資料庫引擎特性

Embedded Visual C++ 3.0 針對掌上型電腦 (PPC/Handheld PC) 提供輕量級資料庫引擎,無傳統「欄位」概念,改以「記錄 + 屬性」鍵值對儲存,適合小型結構化資料。

核心類別速覽

類別職責
CCeDBDatabase資料庫連線、建立、開啟、關閉、記錄枚舉
CCeDBRecord單一記錄容器,管理多個 Property
CCeDBProp屬性封裝:型別、識別碼、值、排序屬性

完整操作流程範例

1. 定義常數與變數

const DWORD DB_IDENT = 12347;           // 資料庫識別碼
const WCHAR DB_NAME[] = L"code";        // 資料庫名稱 (Unicode)
const WORD PROP_CODE = 102;             // 屬性識別碼

CCeDBDatabase m_db;                     // 成員變數

2. 開啟/建立資料庫

BOOL CEP_PPDlg::OpenDB() {
    CEOID poid;
    BOOL b;
    // 定義排序屬性:字串型、PROP_CODE、遞增
    CCeDBProp sort[1] = { CCeDBProp(CCeDBProp::Type_String, PROP_CODE, CCeDBProp::Sort_Ascending) };
    
    if (!(b = CCeDBDatabase::Exists(DB_NAME))) { // 不存在則建立
        if (!(poid = m_db.Create(DB_NAME, DB_IDENT, 1, sort)))
            return FALSE;
    }
    if (!(b = m_db.Open(DB_NAME))) return FALSE;
    m_bIsConnect = TRUE;
    return TRUE;
}

3. 讀取所有記錄

void CEP_PPDlg::ReadDB() {
    CCeDBRecord rs;
    CString strCode;
    int num = (int)m_db.GetNumRecords();
    for (int i=0; i<num; i++) {
        m_db.ReadCurrRecord(&rs);
        strCode = rs.GetPropFromIdent(PROP_CODE)->GetString();
        m_list.AddString(strCode);
    }
}

4. 插入新記錄

void CEP_PPDlg::InsertDB(int i) {
    WCHAR wcCode[15];
    CCeDBProp props[1];
    CString strCode;
    CCeDBRecord* rs = new CCeDBRecord;
    
    m_list.GetText(i, strCode);
    strCode.TrimRight();
    swprintf(wcCode, L"%s", strCode); // ANSI -> Unicode
    
    props[0] = CCeDBProp(wcCode, PROP_CODE);
    rs->AddProps(props, 1);
    m_db.AddRecord(rs);
    delete rs;
}

5. 刪除所有記錄

void CEP_PPDlg::DeleteDB() {
    int num = (int)m_db.GetNumRecords();
    for (int i=0; i<num; i++) {
        m_db.SeekFirst();
        m_db.DeleteCurrRecord();
    }
}

6. 關閉資料庫

BOOL CEP_PPDlg::CloseDB() { return m_db.Close(); }

關鍵差異提醒

  • Unicode 強制:所有字串參數皆為 WCHAR*,需用 swprintf、MultiByteToWideChar 轉換
  • 無 Schema:不需預先定義欄位,屬性識別碼 (PROP_CODE) 即為鍵
  • 排序在建立時指定:Create 參數傳入 CCeDBProp 陣列定義索引順序
  • 記錄游標:讀取前需定位 (SeekFirst/SeekNext),ReadCurrRecord 讀取當前位置

適用場景

適合 Windows CE 設備上的:設定檔儲存、小型記錄備忘錄、離線資料快取、掃描器/條碼機資料暫存。不適合複雜關聯查詢、大量資料、多使用者併發場景。

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