MFC读取数据库SQL Server 2008数据库表数据的问题

Cyuanyan 2012-10-03 07:28:08
代码如下:把数据库的数据显示到列表框里


m_ListCrtl.DeleteAllItems(); //删除所有的子项
try
{
m_pRecordset = theApp.m_pConnection->Execute((_bstr_t)sql, NULL, adCmdText);
int i = 0;
while(!m_pRecordset->adoEOF)//记录没有到末尾
{
m_ListCrtl.InsertItem(i, (char*)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)0))));
//当表里有一条记录时可得到(char*)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)0)))为1

m_ListCrtl.SetItemText(i, 1, (char*)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)1)))); //这个地方有错误 明明表里有数据可到这里说找不到。。。


m_ListCrtl.SetItemText(i, 2, (char*)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)2))));

i++;
m_pRecordset->MoveNext();//移动到下一条记录



}



错误提示是:在对应所需名称或序数的集合中,为找到项目。。。。


我测试改为:vr=m_pRecordset->GetCollect(_variant_t((long)0)));
if(vr.vt != VT_NULL)
strName = (LPCSTR)_bstr_t(vr);
MessageBox(strName);
i++;
m_pRecordset->MoveNext();//移动到下一条记录
数据表里有一条记录时MessageBox显示为:1
然后我把_variant_t((long)0改成_variant_t((long)1就说记录里么有。。



不是应该把第二列的数据取出来么。。。。


哪里错了,那个高手知道请帮助我,谢谢啊!
...全文
469 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
华美乐章 2012-10-19
  • 打赏
  • 举报
回复
m_ListCrtl.SetItemText(i, 1, (char*)_bstr_t(m_pRecordset->GetCollect(_variant_t((long)1)))); //这个地方有错误 明明表里有数据可到这里说找不到。。。

这里抛异常了吧?进到catch语句中了吧??
如果是 你看看第二列的字段类型是什么?(char*)不建议这样强转,最好在数据库中获取字段用vt.ChangeType(VT_BSTR)
Cyuanyan 2012-10-07
  • 打赏
  • 举报
回复
有么有谁知道是啥情况啊
Cyuanyan 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

很明显你得先从数据库中取出数据时需要对原始原变体型数据做判断是否为空(VT_NULL),不为空的情况下才能做转换。另外在GetCollect时不用序号改用字段名试试。还有一个问题是插入代码需要改一下:
int nItem = m_ListCrtl.InsertItem(i, (char*)_......
m_ListCrtl.SetItemText(nItem, 1, .......
[/Quote]

改成字段也是说:在对应所需名称或序数的集合中,没找到项目。。。
表里都有符合的行记录,为什么取出来还要判断其是否为空呢。。。【好吧我也去试试】
虽然没有解决问题还是先谢谢了。
xsc2001 2012-10-03
  • 打赏
  • 举报
回复
很明显你得先从数据库中取出数据时需要对原始原变体型数据做判断是否为空(VT_NULL),不为空的情况下才能做转换。另外在GetCollect时不用序号改用字段名试试。还有一个问题是插入代码需要改一下:
int nItem = m_ListCrtl.InsertItem(i, (char*)_......
m_ListCrtl.SetItemText(nItem, 1, .......

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧