4,011
社区成员
发帖
与我相关
我的任务
分享
_variant_t varFileName;
_variant_t varFileStatus;
_variant_t varFilePath;
//_variant_t varOrder;
CString SFileName,SFileStatus,SFilePath;
int i=0;
db.Open(DbFilepath);
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);
while(!Dbset.IsEOF())//如果记录集已经位于最后一条记录之后,IsEof返回非零值
{
varFileName=Dbset.GetFieldValue("FileName");//将数据库里的文件读出来
varFileStatus=Dbset.GetFieldValue("FileStatus");
varFilePath=Dbset.GetFieldValue("FilePath");
//varOrder=Dbset.GetFieldValue("Order");
//Dbset.GetFieldValue("Age",varage);//将数据库里的文件读出来
SFileName=(LPCSTR)_bstr_t(varFileName);
//Sage=(LPCSTR)varage.pbstrVal;//分别将数据库里读出来的文件转化为CString
SFileStatus=(LPCSTR)_bstr_t(varFileStatus);
SFilePath=(LPCSTR)_bstr_t(varFilePath);
//计算需要多少个字节才能表示对应的多字节字符串
DWORD num=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(LPCSTR)SFilePath,-1,NULL,0,NULL,0);
//开辟空间
char *pChar=NULL;
pChar=(char*)malloc(num*sizeof(char));
if (pChar==NULL)
{
free(pChar);
}
memset(pChar,0,num*sizeof(char));
//将宽字节字符串转换为多字节字符串
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(LPCSTR)SFilePath,-1,pChar,num,NULL,0);
//SOrder=(LPCSTR)_bstr_t(varOrder);
m_list.InsertItem(i,"");//向列表视图控件中新插入一行
//m_list.SetItemText(i,0,SOrder);
m_list.SetItemText(i,0,SFileName);//改变列表视图项或子项的文本
m_list.SetItemText(i,1,SFileStatus);//改变列表视图项或子项的文本
m_list.SetItemText(i,2,pChar);
Dbset.MoveNext();//使记录集的下一条记录成为当前记录,否则就不能循环
i++;
}
Dbset.Close();
db.Close();
之所以要转换回来,是要转换回CString