首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WinCE自带数据库应用有关问题

2012-02-03 
WinCE自带数据库应用问题以下是自己写的一段小程序,运行的时候总是不能进入到switch语句的分支内,即不会有

WinCE自带数据库应用问题
以下是自己写的一段小程序,运行的时候总是不能进入到switch语句的分支内,即不会有Refreshing11!的提示。数据库内已经存入数据,只是想在一个ClistCtrl控件中显示其数据。
请问问题出在什么地方?


void   CTCPClientDlg::RefreshDB()
{
CEOID   ceOid;
WORD   wProps;
DWORD   dwRecSize;
PBYTE   pBuff;
PCEPROPVAL   pRecord;

SAVEDATA   *pDBData;

int   iRecordCount=GetRecordCount(&m_ceGuid,m_ceOid);//获得记录数量
DWORD   dwIndex;

        CListCtrl   *pListCtrl=(CListCtrl*)GetDlgItem(IDC_LST_DBDATA);
        pListCtrl-> DeleteAllItems();
//AfxMessageBox(_T( "Refreshing1 "));
for(int   k=0;k <iRecordCount;k++)
{
ceOid=CeSeekDatabase(m_hDB,CEDB_SEEK_BEGINNING,k,&dwIndex);

//AfxMessageBox(_T( "Refreshing4! "));

ASSERT(ceOid!=0);
pBuff=0;
ceOid=CeReadRecordProps(m_hDB,CEDB_ALLOWREALLOC,&wProps,NULL,&(LPBYTE)pBuff,&dwRecSize);
ASSERT(ceOid!=0);


pRecord=(PCEPROPVAL)pBuff;
pDBData=new   SAVEDATA;

CString   str;
str.Format(_T( "Refreshing5,and   the   wProps=%d,the   count=%d "),wProps,iRecordCount);
AfxMessageBox(str);  
for(int   i=0;i <wProps;i++)  
{
AfxMessageBox(_T( "Refreshing10! "));

switch(pRecord-> propid)///////////////???????????
{
AfxMessageBox(_T( "Refreshing11! "));
case   PID_RECVSTR:
{
//wcscpy((unsigned   short*)pDBData-> RecvStr,(unsigned   short*)pRecord-> val.blob.lpb);
break;
}
AfxMessageBox(_T( "Refreshing8! "));
case   PID_RECVLEN:
{
pDBData-> len=pRecord-> val.iVal;
break;
}
AfxMessageBox(_T( "Refreshing9! "));
}
pRecord++;
AfxMessageBox(_T( "Refreshing6! "));
}
LocalFree(pBuff);
//AfxMessageBox(_T( "Refreshing3! "));

TCHAR   szStature[5];
_itow(pDBData-> len,szStature,10);
pListCtrl-> SetItemText(k,0,(unsigned   short   *)szStature);
//pListCtrl-> SetItemText(k,1,(const   unsigned   short   *)pDBData-> RecvStr);

delete   pDBData;

}
AfxMessageBox(_T( "Refreshing2! "));
return;
}

[解决办法]
switch(pRecord-> propid)///////////////???????????
{
AfxMessageBox(_T( "Refreshing11! "));
case PID_RECVSTR:

你搞错了吧, 事实上SWitch 根本不执行AfxMessageBox(_T( "Refreshing11! "));

只会执行case :中的语句

热点排行