青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數(shù)據(jù)加載中……

EDB數(shù)據(jù)庫的操作

一、WM5以前的系統(tǒng)中一般都是使用的CEDB數(shù)據(jù)庫,EDB是WM5中的新特性之一。為了改善應用程序的性能和長期可移植性,CEDB 已經(jīng)被 EDB 所取代。EDB 利用了 SQL Mobile 使用的存儲子系統(tǒng),并且提供了明顯優(yōu)于 CEDB 的性能(尤其是在與持久存儲區(qū)一起使用時)。因為 CEDB 提供了與 EDB 完全相同的函數(shù)集 ,所有函數(shù)都具有相同的名稱和參數(shù)列表。但是EDB中也包含了CEDB中所沒有函數(shù),并且創(chuàng)建方法也不相同了,要比CEDB復雜。

二、EDB數(shù)據(jù)庫的創(chuàng)建和基本操作
1.創(chuàng)建數(shù)據(jù)庫卷:CeMountDBVol( );//創(chuàng)建卷
CeCreateDatabaseWithProps();//卷創(chuàng)建成功后創(chuàng)建EDB
CeCreateSession();//EDB創(chuàng)建成功后創(chuàng)建session,用于打開EDB
CeOpenDatabaseInSession();//打開EDB
創(chuàng)建EDB時前還要創(chuàng)建一個CEDBASEINFOEX對象,這個對象用于創(chuàng)建EDB中的info,用于設定EDB。
在打開時還要維護一個全局的HANDLE,在以后的操作中是要使用的.
2.對數(shù)據(jù)庫進行讀,寫,刪除的操作
CeSeekDatabaseEx();//定位所要找的數(shù)據(jù)
CeReadRecordPropsEx();//讀出定位的數(shù)據(jù)
創(chuàng)建一個CEPROPVAL對象,將所要定位數(shù)據(jù)的條件傳給這個結構。
CeWriteRecordProps();//數(shù)據(jù)寫入EDB
創(chuàng)建一個CEPROPVAL對象,或?qū)ο髷?shù)組,將所要寫入的數(shù)據(jù)傳給這些對象。
CeSeekDatabaseEx();//定位要刪除的數(shù)據(jù)
CeDeleteRecord();//刪除定位的數(shù)據(jù)
CeWriteRecordProps();//數(shù)據(jù)寫入新數(shù)據(jù)到EDB覆蓋原數(shù)據(jù)
CloseHandle(打開時的句柄);
3.其他的一些數(shù)據(jù)庫操作函數(shù)

列舉數(shù)據(jù)庫: CeFindFirstDatabaseEx和CeFindNextDatabase

獲得數(shù)據(jù)庫的信息:CeOidGetInfoEx

//在EDB的消息函數(shù)中用到

釋放通告消息結構體:CeFreeNotification
將數(shù)據(jù)緩沖到flash上:CeFreeNotification
獲得打開的數(shù)據(jù)庫所使用的句柄:CeGetDBInformationByHandle

設置數(shù)據(jù)庫的各種參數(shù):CeSetDatabaseInfoEx

列舉所有轉(zhuǎn)載的數(shù)據(jù)庫卷并返回卷名:CeEnumDBVolumes
三、以下是EDB代碼示例
 CEOID oid = NULL;
 CEGUID guidVol = {0,};
 BOOL fOK = true;
 HANDLE h = INVALID_HANDLE_VALUE;
 LPWSTR lpwszDBVol = L"volume.db";

 SORTORDERSPECEX s =
 {
  2, // wVersion should be 2 for EDB
  1, // wNumProps
  0, // wKeyFlags
  0, // wReserved
  0, //rgPropID,
  { 0 } //rgdwFlags
 };

 CEDBASEINFOEX info =
 {
  2, // wVersion must be 2 for EDB
  0, // wNumSortOrder
  (CEDB_VALIDNAME | CEDB_VALIDTYPE | CEDB_VALIDSORTSPEC), // dwFlags
  L"Table1", // szDbaseName
  0x777, // dwDbaseType
  4,/*NULL, // dwNumRecords*/
  NULL, // dwSize (Not used by EDB)
  {0,}, //ftLastModified (Not used by EDB)
 };

 CEPROPVAL val =
 {
  0,    // propid
  NULL, // wLenData - can be garbage on entry
  NULL, // wFlags
  0 
 };

 s.rgPropID[0] = CEVT_LPWSTR;
 val.propid = CEVT_LPWSTR;


 CEPROPSPEC CEPropSpec[4];
 CEPropSpec[0].wVersion = 1;
 CEPropSpec[0].propid = CEVT_LPWSTR;
 CEPropSpec[0].dwFlags = 0;
 CEPropSpec[0].pwszPropName = TEXT("Name");
 CEPropSpec[0].cchPropName = CEDB_MAXDBASENAMELEN;


 // The Following .
 CEPropSpec[1].wVersion = 1;
 CEPropSpec[1].propid = CEVT_LPWSTR;
 CEPropSpec[1].dwFlags = 0;
 CEPropSpec[1].pwszPropName = TEXT("Phone");
 CEPropSpec[1].cchPropName = CEDB_MAXDBASENAMELEN;

 // The Following .
 CEPropSpec[2].wVersion = 1;
 CEPropSpec[2].propid = CEVT_LPWSTR;
 CEPropSpec[2].dwFlags = 0;//0;
 CEPropSpec[2].pwszPropName = TEXT("Content");
 CEPropSpec[2].cchPropName = CEDB_MAXDBASENAMELEN;

 // The Following .
 CEPropSpec[3].wVersion = 1;
 CEPropSpec[3].propid = CEVT_LPWSTR;
 CEPropSpec[3].dwFlags = 0;//0;
 CEPropSpec[3].pwszPropName = TEXT("Isread");
 CEPropSpec[3].cchPropName = CEDB_MAXDBASENAMELEN;

 if (!CeMountDBVolEx(&guidVol, lpwszDBVol, NULL, CREATE_ALWAYS))
 {
  fOK = false;
  goto exit;
 }

 if ((oid = CeCreateDatabaseWithProps(&guidVol, &info, 0, CEPropSpec)) == NULL)
 {
  fOK = false;
  goto exit;
 }


 if ((h = CeOpenDatabaseInSession(NULL, &guidVol, &oid, NULL, NULL,
  0, NULL)) == INVALID_HANDLE_VALUE)
 {
  fOK = false;
  goto exit;
 }

 CEPROPVAL pProp[4];
 pProp[0].propid = PID_NAME;
 pProp[0].wFlags = 0;
 pProp[0].wLenData = 0;
 pProp[0].val.lpwstr = L"777rewr";

 pProp[1].propid = PID_PHONE;
 pProp[1].wFlags = 0;
 pProp[1].wLenData = 0;
 pProp[1].val.lpwstr = L"888rer";

 pProp[2].propid = PID_CONTENT;
 pProp[2].wFlags = 0;
 pProp[2].wLenData = 0;
 pProp[2].val.lpwstr = L"123rewr";

 pProp[3].propid = PID_ISREADED;
 pProp[3].wFlags = 0;
 pProp[3].wLenData = 0;
 pProp[3].val.lpwstr = L"234rewr";

 //Write records.
 for(int i = 0; i < 100; ++i)
  oid = CeWriteRecordProps(h, 0, 4, pProp);

 //Add records.
 CeWriteRecordProps(h, 0, 4, pProp);

 

 CeFlushDBVol(&guidVol); // Just being paranoid!
 CloseHandle(h);


exit:

 CeUnmountDBVol(&guidVol);

查找及刪除操作示例:
bool fOK = true;
 CEOID oid = NULL;
 CEOID oidRow = NULL;
 CEGUID guidVol;
 HANDLE h = INVALID_HANDLE_VALUE;
 HANDLE    hDBOpened = NULL;

 CREATE_INVALIDGUID(&guidVol);

 if (!CeMountDBVolEx(&guidVol, L"volume.db", NULL, OPEN_EXISTING))
 {
  fOK = false;
  MessageBox(L"Err!!!");
 }

 
 // Open Database by Name to get its oid.
 if ((h = CeOpenDatabaseInSession(NULL, &guidVol, &oid, L"Table1", NULL,
  CEDB_AUTOINCREMENT, NULL)) == INVALID_HANDLE_VALUE)
 {
  fOK = false;
  MessageBox(L"Err!!!");
 }

 CEOIDINFOEX ceoidInfoEx;
 memset(&ceoidInfoEx,0,sizeof(CEOIDINFOEX));
 ceoidInfoEx.wVersion = 2;

//  if (!CeOidGetInfoEx2(&guidVol, oid, &ceoidInfoEx))
//  {
//   DWORD err = GetLastError();
//   MessageBox(_T("CeOidGetInfoEx2  error!!!"));
//  } 
//  
//  int Leng = ceoidInfoEx.infDatabase.dwNumRecords;
//  CString cs;
//  cs.Format(L"%d",Leng);
//  MessageBox(cs);

 CeSeekDatabaseEx(h, CEDB_SEEK_BEGINNING, 0, 0, NULL);

 WORD          dwPropId = 0;
 DWORD         dwSizeOfBuffer = 0;
 CEOID         ceoidFindRecord = 0;
 WORD          wNumRecProps = 0;
 LPBYTE        lpRecProps = NULL;
 PCEPROPVAL    pCePropVal = NULL;
 DWORD         dwBufLen = 256;
 BOOL m_bFlag = FALSE;
 
 int m_iCount = 0;
 while(ceoidFindRecord = CeReadRecordPropsEx(h, CEDB_ALLOWREALLOC, &dwPropId, NULL, &lpRecProps, &dwSizeOfBuffer, NULL))
 {
  if(GetLastError() != ERROR_NO_MORE_ITEMS)
  {
   pCePropVal = (PCEPROPVAL)lpRecProps;
   LPWSTR lpnum;
   if (m_iCount%2)
    lpnum = pCePropVal[3].val.lpwstr;
   else
    lpnum = pCePropVal[1].val.lpwstr;


  TRACE(L"%d=%s\n",m_iCount,lpnum);
 
   ++m_iCount;
   if(!lpnum )
   {
    CeDeleteRecord(h, ceoidFindRecord);
    m_bFlag = FALSE;
   }
   else
    m_bFlag = TRUE;
  } 
 }
 CString str;
 str.Format(L"%d",m_iCount);
 MessageBox(str);

 if (h)
  CloseHandle(h);

 if(&guidVol)
 {
  CeFlushDBVol(&guidVol);
  CeUnmountDBVol(&guidVol);
 }

頭文件:extern "C"
{
#include <windbase_edb.h>
}

#define EDB

 

posted on 2008-08-11 13:20 Benjamin 閱讀(3283) 評論(0)  編輯 收藏 引用 所屬分類: PDA/PPC開發(fā)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品夜色噜噜亚洲a∨| 亚洲国产精品久久久久婷婷884| 99re6热在线精品视频播放速度| 欧美亚洲综合网| 欧美一区成人| 久久久久久穴| 欧美a级大片| 亚洲国产第一| 久久亚洲捆绑美女| 欧美激情一区二区久久久| 欧美激情a∨在线视频播放| 欧美高清一区| 一区二区三区福利| 欧美一区成人| 欧美成人国产va精品日本一级| 欧美精品日韩一区| 国产麻豆视频精品| 91久久国产精品91久久性色| 日韩午夜精品| 欧美一区二区视频免费观看 | 久久伊人一区二区| 亚洲电影自拍| 亚洲摸下面视频| 免费日韩精品中文字幕视频在线| 欧美精品日韩一本| 国内精品写真在线观看| 一二三四社区欧美黄| 久久精品中文字幕一区二区三区| 欧美jizz19性欧美| 亚洲一区二区三区四区中文| 老司机免费视频久久| 国产精品美女久久久久aⅴ国产馆| 狠狠色噜噜狠狠色综合久| 99re8这里有精品热视频免费| 欧美一区二区三区四区在线观看| 免费观看在线综合色| 亚洲图色在线| 欧美日韩精品二区第二页| 一区二区三区自拍| 久久国产精品久久久久久| 亚洲精品一区中文| 男女精品网站| 亚洲电影在线免费观看| 欧美在线地址| 亚洲免费一在线| 国产精品高精视频免费| 一本色道88久久加勒比精品| 欧美成年人视频网站| 久久成人免费日本黄色| 国产噜噜噜噜噜久久久久久久久| 在线一区二区三区四区| 欧美日本精品| 男女激情视频一区| 亚洲国产精品第一区二区| 久久手机免费观看| 午夜一区不卡| 国产农村妇女精品一二区| 亚洲天堂激情| 夜夜嗨一区二区三区| 欧美日韩一区三区四区| 一本色道久久88亚洲综合88| 亚洲国产视频一区二区| 欧美成年网站| 一区二区电影免费观看| 亚洲精品乱码| 欧美日韩中文精品| 亚洲自拍偷拍网址| 亚洲手机在线| 国产情侣一区| 六十路精品视频| 噜噜噜在线观看免费视频日韩| 好看的亚洲午夜视频在线| 久久国产乱子精品免费女| 欧美在线看片a免费观看| 好看的亚洲午夜视频在线| 欧美搞黄网站| 欧美日韩国产天堂| 亚洲男人的天堂在线观看 | 久久伊人精品天天| 亚洲第一精品影视| 亚洲国产精品精华液网站| 欧美理论电影在线播放| 中文国产成人精品久久一| 一本久道久久综合婷婷鲸鱼| 国产精品久久久久7777婷婷| 欧美亚洲视频| 久久综合给合久久狠狠色| 亚洲另类在线视频| 亚洲一区二区三区高清不卡| 国产一区二区三区黄| 欧美国产综合| 国产精品视频免费观看| 午夜久久黄色| 久热爱精品视频线路一| 宅男在线国产精品| 久久久不卡网国产精品一区| 亚洲精品婷婷| 欧美在线视频观看| 亚洲精品影视| 亚洲欧美在线网| 亚洲精品影院| 久久久在线视频| 亚洲摸下面视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲午夜极品| 久久精品青青大伊人av| 亚洲一区二区三区欧美| 欧美jizz19性欧美| 久久久久久网| 国产精品一区2区| 亚洲精品一区在线观看香蕉| 1769国内精品视频在线播放| 亚洲欧洲另类国产综合| 亚洲图片在线| 亚洲日本一区二区| 国产午夜精品视频免费不卡69堂| 亚洲国产mv| 亚洲国产精品一区二区第四页av| 亚洲在线观看| 亚洲一区激情| 欧美日韩成人在线| 欧美激情区在线播放| 国语精品中文字幕| 午夜精品三级视频福利| 亚洲欧美日韩国产成人精品影院| 欧美黄色网络| 欧美国产日韩精品| 国产在线国偷精品产拍免费yy| 亚洲一区二区三区在线| 在线视频欧美一区| 美日韩精品视频| 欧美成人综合一区| 亚洲第一精品夜夜躁人人躁 | 欧美一站二站| 亚洲自拍电影| 国产精品国产三级国产a| 亚洲欧洲精品成人久久奇米网| 亚洲高清不卡在线观看| 久久精品女人| 久久综合网色—综合色88| 国产亚洲激情| 亚洲一区二区综合| 欧美一区二区高清在线观看| 国产精品免费一区豆花| 亚洲一二三区视频在线观看| 午夜在线视频一区二区区别| 亚洲国产成人在线播放| 亚洲精品自在久久| 久久中文字幕一区| 亚洲风情在线资源站| 夜夜狂射影院欧美极品| 欧美日韩一区成人| 亚洲一区二三| 久久在线播放| 亚洲免费观看在线视频| 欧美三级电影精品| 欧美一区二区三区久久精品茉莉花 | 久久国产精品99国产| 欧美电影在线播放| 亚洲美女在线视频| 久热这里只精品99re8久| 亚洲国产精品综合| 欧美日本国产视频| 亚洲欧美第一页| 欧美**人妖| 中日韩美女免费视频网站在线观看| 国产精品日本一区二区| 欧美影院成年免费版| 亚洲国产精品日韩| 新片速递亚洲合集欧美合集| 一区二区三区在线视频播放| 欧美日韩精品伦理作品在线免费观看| 亚洲视频一区在线观看| 麻豆精品视频在线观看| 国产精品99久久久久久久女警| 亚洲区一区二| 亚洲日产国产精品| 国产精品福利片| 久久一区二区三区av| 一本一本久久a久久精品牛牛影视| 欧美在线国产| 夜夜夜久久久| 樱桃国产成人精品视频| 欧美色视频一区| 巨胸喷奶水www久久久免费动漫| 亚洲一区二区免费视频| 欧美黄色视屏| 久久这里有精品15一区二区三区| 亚洲一区二区视频在线| 最新中文字幕亚洲| 国产网站欧美日韩免费精品在线观看 | 中日韩男男gay无套| 久久综合狠狠| 性欧美办公室18xxxxhd| 亚洲美女视频网| 激情小说亚洲一区| 国产欧美日韩一区二区三区| 欧美日韩国产精品一区| 欧美成人自拍视频| 久久久久久精|