• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            posts - 54, comments - 32, trackbacks - 0, articles - 0

            MFC 數(shù)據(jù)庫操作

            Posted on 2007-03-28 16:45 宋鵬 閱讀(1402) 評論(0)  編輯 收藏 引用 所屬分類: 數(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();?刪除紀(jì)錄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")))?
              ?{
              ?//如果數(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ù)庫中加入紀(jì)錄

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

              創(chuàng)建數(shù)據(jù)庫時,我們可以同時定義字段,然后設(shè)置紀(jì)錄變量的各字段值,最后將記錄加入到數(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ù)庫中檢索紀(jì)錄

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

              ?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ù)庫紀(jì)錄外,還可按條件查找紀(jì)錄,如:查找具有指定屬性的記錄。
              CCeDBProp?prop;


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


              //先查找指定紀(jì)錄
              db.DeleteCurrRecord();


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

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


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

            欧美久久综合九色综合| 日日狠狠久久偷偷色综合0| 免费一级欧美大片久久网| 四虎国产精品免费久久| 国产日韩久久久精品影院首页| 久久久久无码专区亚洲av| 久久免费视频1| 久久精品国产亚洲AV无码娇色| 精品久久久久久久| 国产成人精品久久一区二区三区av | 午夜视频久久久久一区 | 久久99精品综合国产首页| 久久91这里精品国产2020| 国内精品九九久久精品| 国产A级毛片久久久精品毛片| 性高湖久久久久久久久AAAAA| 久久亚洲精品成人av无码网站| 亚洲欧美一区二区三区久久| 国产成人久久精品激情| 无码久久精品国产亚洲Av影片 | 青青草国产97免久久费观看| 亚洲va中文字幕无码久久不卡| 久久久久久久久久免免费精品| 久久久久人妻精品一区| 久久久国产视频| 人妻中文久久久久| 99久久国产综合精品五月天喷水| 热99re久久国超精品首页| 日韩久久无码免费毛片软件| 久久久久成人精品无码中文字幕| 女人高潮久久久叫人喷水| 国产精品青草久久久久福利99| 国产一区二区三区久久| 99久久精品影院老鸭窝| 精品国产91久久久久久久| 久久精品国产亚洲αv忘忧草| 国产精品99久久久精品无码 | 亚洲精品乱码久久久久久自慰| 欧美久久久久久午夜精品| 久久久久黑人强伦姧人妻| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 |