Embedded Visual C++ 3.0 針對掌上型電腦 (PPC/Handheld PC) 提供輕量級資料庫引擎,無傳統「欄位」概念,改以「記錄 + 屬性」鍵值對儲存,適合小型結構化資料。
| 類別 | 職責 |
|---|---|
| CCeDBDatabase | 資料庫連線、建立、開啟、關閉、記錄枚舉 |
| CCeDBRecord | 單一記錄容器,管理多個 Property |
| CCeDBProp | 屬性封裝:型別、識別碼、值、排序屬性 |
const DWORD DB_IDENT = 12347; // 資料庫識別碼
const WCHAR DB_NAME[] = L"code"; // 資料庫名稱 (Unicode)
const WORD PROP_CODE = 102; // 屬性識別碼
CCeDBDatabase m_db; // 成員變數
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;
}
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);
}
}
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;
}
void CEP_PPDlg::DeleteDB() {
int num = (int)m_db.GetNumRecords();
for (int i=0; i<num; i++) {
m_db.SeekFirst();
m_db.DeleteCurrRecord();
}
}
BOOL CEP_PPDlg::CloseDB() { return m_db.Close(); }
WCHAR*,需用 swprintf、MultiByteToWideChar 轉換Create 參數傳入 CCeDBProp 陣列定義索引順序SeekFirst/SeekNext),ReadCurrRecord 讀取當前位置適合 Windows CE 設備上的:設定檔儲存、小型記錄備忘錄、離線資料快取、掃描器/條碼機資料暫存。不適合複雜關聯查詢、大量資料、多使用者併發場景。