!关于VS2008 MFC 读取Assess数据库字符串的有关问题

求助!!!关于VS2008 MFC 读取Assess数据库字符串的问题
我用VS2008 MFC编写了一个读取Assess数据可的程序,数据库里面有Name和Age两项数据,但是我用GetFieldValue读取Name后却只显示其字符串中的首字母,比如数据库里是“li”,而读出的却只有“l”。但Age读取是正确的,Age是数字来的,代码如下:
        CDAORecordset m_DbSet(&m_DataBase);
COleVariant varage;
COleVariant m_varname;
CString Sname,Sage;
int i=0;
m_DataBase.Open(Filepath);
m_DbSet.Open(AFX_DAO_USE_DEFAULT_TYPE,_T("SELECT * FROM DataTable"),0);
while(!m_DbSet.IsEOF())
{
m_DbSet.GetFieldValue(_T("Age"),varage);
m_DbSet.GetFieldValue(_T("Name"),m_varname);
Sname=(LPTSTR)m_varname.pbstrVal;
Sage=(LPTSTR)varage.pbstrVal;
m_ctrlList.InsertItem(i,_T(""));
m_ctrlList.SetItemText(i,0,Sname);
m_ctrlList.SetItemText(i,1,Sage);
m_DbSet.MoveNext();
i++;
}
m_DbSet.Close();
m_DataBase.Close();
拜谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vs2008 数据库 MFC

------解决方案--------------------
引用:
试了您的方法调试了一下发现pStr指针指向的值很奇怪,有32位这么长
比如我需要读取的字符时'li'
而pStr[0] = 'l' ; pStr[1] = '0'; pStr[2] = 'i';
这是为什么,应该怎么办


这里就很明显的看也是UNICODE编码了, 即UTF16编码, 每个字符占两个字节, 由于字母只会用了一个字节, 所以高字节就是0. 所以在内存中就是你看到的样子了. 所以你按我的代码, 强制转换成wchar_t就能正常显示了.
当然, 由于你的环境是多字符集, 所以. m_ctrlList.SetItemText(i,0,Sname); 强制转换后,不能直接添加到列表中, 需要再使用WideCharToMultiByte转换后才能添加到列表.