小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Windows CE平臺上的數(shù)據(jù)庫編程

 younghome 2009-02-16

Windows CE平臺上的數(shù)據(jù)庫編程


  隨著掌上電腦的迅速崛起,微軟推出的運行在掌上電腦上的操作系統(tǒng)Windows CE越來越引人矚目。

  Windows CE包括一個Win32 API子集,一個適宜于靜態(tài)、動態(tài)內(nèi)存存儲的文件系統(tǒng)等。根據(jù)需要,還增加了一些Windows所沒有的特性,增加了一些新的API(包括一些新的數(shù)據(jù)庫API)。其中數(shù)據(jù)庫被定位在對象存儲(Object Store)中。對象存儲是掌上電腦內(nèi)存的一部分,是操作系統(tǒng)分配來存儲永久文件、注冊表、Windows CE 數(shù)據(jù)庫的。掌上電腦剩余的內(nèi)存是應(yīng)用程序內(nèi)存,供應(yīng)用程序使用。

  Windows CE中用來操作數(shù)據(jù)庫的函數(shù)有:打開數(shù)據(jù)庫CeOpenDatabase(); 關(guān)閉數(shù)據(jù)庫CloseHandle(); 刪除紀錄CeDeleteRecord等。

  Windows CE上數(shù)據(jù)庫的一些附加特性也是很有意思的,如數(shù)據(jù)庫支持“time stamps”,這個特性讓開發(fā)者可以測試自上次讀數(shù)據(jù)后是否有別的程序修改了數(shù)據(jù)。

  下面讓我們詳細介紹Windows CE上的數(shù)據(jù)庫編程(開發(fā)工具:VC 5.0,WindowsCE ToolKit for VC 5.0)。

   基本數(shù)據(jù)庫操作

  1.創(chuàng)建數(shù)據(jù)庫





void CMyDB::CreateDatabase()
  {
   CCeDBDatabase db;
   // 檢查數(shù)據(jù)庫是否存在
   if(!CCeDBDatabase::Exists(_T("My Database")))
   {
   file://如果數(shù)據(jù)庫不存在,就創(chuàng)建它
   db.Create(_T("My Database"));
   }
  }


  2.打開數(shù)據(jù)庫





CCeDBDatabase db;
db.Open(_T(″My Database″));
  
  3.刪除數(shù)據(jù)庫





CCeDBDatabase db;
if (db.Open(_T(″My Database″)))
 db.Delete();
  
  4.關(guān)閉數(shù)據(jù)庫





CCeDBDatabase db;
db.Open(_T(″My Database″));
db.Close();
  
  向數(shù)據(jù)庫中加入紀錄

  這里我向大家介紹另兩個數(shù)據(jù)庫類:CCeDBRecord,CCeDBProp。

  創(chuàng)建數(shù)據(jù)庫時,我們可以同時定義字段,然后設(shè)置紀錄變量的各字段值,最后將記錄加入到數(shù)據(jù)庫中。





// Create database
   const DWORD DB_IDENT_ID = 11111;
   const WORD PROP_NAME=101,PROP_AGE=102,PROP_GENDER=103;
   CCeDBDatabase db ;
   CEOID poid;
   CCeDBProp dbprops[3] = {
   CCeDBProp(CCeDBProp::Type_String,PROP_NAME,CCeDBProp::Sort_Ascending),
   CCeDBProp(CCeDBProp::Type_UShort,PROP_AGE,CCeDBProp::Sort_Descending),
   CCeDBProp(CCeDBProp::Type_UShort,PROP_GENDER,CCeDBProp::Sort_UnknownFirst)
   };

   if(!(poid = db.Create((_T("My DB"),DB_IDENT_ID,3,dbprops)))
   return FALSE;
   if(!db.Open(poid)) return FALSE;


   // Add records
   CCeDBRecord rec;
   CCeDBProp props[3];
   props[0] = CCeDBProp(_T("LiMing"),PROP_NAME);
   props[1] = CCeDBProp((USHORT)20, PROP_AGE);
   props[2] = CCeDBProp((USHORT)'M',PROP_GENDER);
   rec.AddProps(props,3);
   if(!db.AddRecord(&rec)) return FALSE;
  
  從數(shù)據(jù)庫中檢索紀錄

  我們可以通過調(diào)用CCeDBDatabase::GetNumRecords()獲取紀錄數(shù)。通過CCeDBDatabase::GetCurrRecord()獲取每個紀錄的指針。





BOOL bPrev = pdb-〉m_bAutoSeekNext;
   pdb-〉m_bAutoSeekNext = TRUE;
   pdb-〉SeekFirst();
   while(pdb-〉ReadCurrRecord(&rec))
   MyPrintRecord(&rec);//處理數(shù)據(jù)(顯示記錄)
   pdb-〉m_bAutoSeekNext = bPrev;


  通過調(diào)用CCeDBRecord::GetPropFromIdent()獲取每個字段值。

   pPropName=prec-〉GetPropFromIdent(PROP_NAME);
   LPWSTR strName=pPropName-〉GetString();
  除了可以遍歷數(shù)據(jù)庫紀錄外,還可按條件查找紀錄,如:查找具有指定屬性的記錄。
  CCeDBProp prop;


   ....//設(shè)置待查找紀錄的屬性
   db.SeekFirstEqual(&prop);
   從數(shù)據(jù)庫中刪除紀錄


  file://先查找指定紀錄
  db.DeleteCurrRecord();


   修改數(shù)據(jù)庫中紀錄

   CCeDBRecord rec;
   ....//查找待修改的記錄


   ....//修改記錄的屬性

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多