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

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>
            欧美日韩一卡二卡| 国产精品视频免费一区| 欧美ab在线视频| 在线视频一区观看| 激情成人中文字幕| 欧美成人嫩草网站| 久久精品亚洲国产奇米99| 亚洲视频在线观看免费| 亚洲乱码国产乱码精品精可以看 | 久久免费午夜影院| 亚洲欧美日韩在线高清直播| 麻豆91精品91久久久的内涵| 欧美一级二级三级蜜桃| 亚洲专区一区| 亚洲欧洲精品成人久久奇米网| 国产一区二区高清不卡| 国产午夜亚洲精品羞羞网站| 国产精品成人一区二区三区夜夜夜 | 亚洲天堂黄色| 一区二区三区高清视频在线观看| 欧美资源在线观看| 欧美一区91| 久久精品视频免费| 亚洲一区二区三区三| 亚洲欧美色婷婷| 久久都是精品| 蜜桃久久av一区| 欧美刺激午夜性久久久久久久| 欧美xart系列在线观看| 欧美激情一区二区三区在线视频观看| 亚洲综合精品一区二区| 欧美亚洲一区二区在线观看| 久久高清一区| 欧美电影在线观看| 99v久久综合狠狠综合久久| 99国内精品久久| 亚洲综合视频一区| 亚洲欧美日韩高清| 久久精品天堂| 久久露脸国产精品| 久久精品女人的天堂av| 中文国产成人精品| 99热精品在线| 亚洲尤物视频网| 亚洲一本大道在线| 亚洲综合视频一区| 久久免费视频在线| 国产精品v亚洲精品v日韩精品 | 中国亚洲黄色| 久久国产综合精品| 亚洲高清色综合| 亚洲高清成人| 亚洲字幕一区二区| 亚洲美女视频在线观看| 亚洲专区在线| 亚洲人成在线影院| 免费看的黄色欧美网站| 国产一区二区三区的电影| 亚洲性感激情| 亚洲精品一区二区三区樱花| 久久字幕精品一区| 国内精品久久久久影院优| 亚洲免费人成在线视频观看| 91久久嫩草影院一区二区| 久久久一本精品99久久精品66| 国产欧美精品va在线观看| 亚洲中字在线| 亚洲一级免费视频| 国产欧美精品在线播放| 午夜一区二区三区在线观看| av不卡在线看| 欧美午夜精品理论片a级按摩| 99精品免费| 亚洲伦理在线观看| 欧美午夜剧场| 午夜亚洲视频| 午夜视频一区| 国内一区二区三区| 老司机一区二区| 可以看av的网站久久看| 亚洲精品视频免费在线观看| 亚洲黄页视频免费观看| 欧美激情亚洲自拍| 亚洲一级黄色| 亚洲欧美中文在线视频| 韩日午夜在线资源一区二区| 你懂的视频欧美| 欧美大片在线观看一区| 一区二区高清在线| 亚洲永久网站| 亚洲国产精品www| 亚洲精品男同| 亚洲在线不卡| 韩日成人在线| 亚洲激情视频在线| 国产精品久久久久久av福利软件| 亚洲在线观看视频网站| 欧美一区二区在线| 亚洲第一精品电影| 99精品国产在热久久下载| 国产女主播一区二区| 免费在线视频一区| 欧美午夜免费| 久久阴道视频| 欧美视频四区| 久久国产高清| 欧美韩日精品| 欧美中文字幕在线| 欧美精品观看| 另类尿喷潮videofree| 欧美日韩在线播放三区四区| 久久日韩精品| 国产精品成人一区二区三区夜夜夜| 久久久久久久久久久一区| 欧美精品一级| 美女脱光内衣内裤视频久久网站| 欧美精品福利| 久久综合福利| 国产精品资源| 亚洲激情精品| 激情文学一区| 亚洲欧美国产一区二区三区| 日韩亚洲成人av在线| 久久黄色影院| 午夜免费在线观看精品视频| 欧美成人午夜激情视频| 久久久噜噜噜久久狠狠50岁| 国产精品videossex久久发布| 欧美电影电视剧在线观看| 国产精品一区二区三区久久| 亚洲精品在线观看视频| 亚洲国产欧美不卡在线观看| 欧美亚洲视频在线看网址| 亚洲一区国产| 欧美日韩一区二| 亚洲国产午夜| 亚洲精品国产精品国自产在线| 久久国产色av| 久久久亚洲国产美女国产盗摄| 久久精品成人欧美大片古装| 亚洲欧美综合另类中字| 欧美日韩中文在线| 亚洲精品视频免费| 日韩一级精品| 欧美日韩八区| 亚洲狼人综合| 一区二区免费在线观看| 欧美激情影院| 亚洲日本无吗高清不卡| 亚洲美女中文字幕| 欧美日韩高清免费| 免费日本视频一区| 国产手机视频一区二区| 亚洲一区二区三区在线| 欧美亚洲自偷自偷| 欧美色精品天天在线观看视频 | 99在线热播精品免费99热| 亚洲福利专区| 久久国产夜色精品鲁鲁99| 久久人人爽爽爽人久久久| 在线观看不卡av| 欧美~级网站不卡| 亚洲精品欧美激情| 亚洲小说欧美另类社区| 国产精品一区二区三区四区五区 | 一本色道久久综合| 亚洲无限av看| 宅男在线国产精品| 国产女主播在线一区二区| 久久gogo国模裸体人体| 麻豆久久婷婷| 日韩写真在线| 国产亚洲成精品久久| 美女国内精品自产拍在线播放| 亚洲韩国一区二区三区| 亚洲与欧洲av电影| 黄色精品一区二区| 欧美日本中文字幕| 国产三级欧美三级| 欧美一区二区三区视频在线观看| 国产偷自视频区视频一区二区| 老牛影视一区二区三区| 亚洲一级片在线看| 国产揄拍国内精品对白| 欧美不卡高清| 午夜精品久久久久久久蜜桃app| 欧美chengren| 亚洲欧美电影在线观看| 欧美一区二区三区四区高清| 一区二区视频免费完整版观看| 欧美日韩另类丝袜其他| 久久日韩精品| 午夜一区不卡| 99精品热视频| 亚洲国产专区校园欧美| 久久资源av| 欧美一区二区在线视频| 国产精品99久久久久久久久| 亚洲人成亚洲人成在线观看| 国产综合色精品一区二区三区|