记录集返回空的问题

jackfeige 2009-02-12 01:16:41

sql1.Format("select * from ClientProject where client_id='%s'",(char*)(LPCTSTR)m_client_id.GetAt(i));
pRst=m_pConnection->Execute((_bstr_t)sql1,NULL,adCmdText);//单步运行到这里时如果pRst内没数据就出错,有数据还能往下执行,考虑过用TRY,但还是想搞懂为什么返回空时不操作他都会出错!

while(!pRst->adoEOF)
{
var = pRst->GetCollect("client_project");
temp=VariantToCString(var);
tvInsert.hParent = m_subTree[i];
tvInsert.item.pszText =(char*)(LPCTSTR)temp;
tvInsert.item.iImage=2;
tvInsert.item.iSelectedImage=5;
// HTREEITEM main_sun1_1 = GetTreeCtrl().InsertItem(&tvInsert);
main_sun1=GetTreeCtrl().InsertItem(&tvInsert);
m_subPrjTree.push_back(main_sun1);
pRst->MoveNext();
}


出错信息:Unhandled exception in reckon.exe (KERNELL32.DLL):0xE06D7363:Microsoft c++ exception
...全文
54 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shakaqrj 2009-02-13
  • 打赏
  • 举报
回复
你捕捉异常,看看e.Description()报的是什么错
jackfeige 2009-02-12
  • 打赏
  • 举报
回复
没人知道记录集返回空时不捕获异常是否会出错吗?????
jackfeige 2009-02-12
  • 打赏
  • 举报
回复
试过用pRst->Open(...)如果不捕获异常的话返回空记录集时还是会出错!
jackfeige 2009-02-12
  • 打赏
  • 举报
回复
如果带异常捕获的话
try{
sql1.Format("select * from ProjectStation where client_project='%s'",(char*)(LPCTSTR)GetTreeCtrl().GetItemText(m_subPrjTree[i]));
pRst=m_pConnection->Execute((_bstr_t)sql1,NULL,adCmdText);
}
catch(_com_error e){}
这样也没问题;



现在就是搞不懂返回空时为什么出错,还是本来就是这样的一定要捕获异常?
shakaqrj 2009-02-12
  • 打赏
  • 举报
回复
1.换用pRst->open的方式
2.捕捉异常
jackfeige 2009-02-12
  • 打赏
  • 举报
回复
1楼:指令肯定没错,因为当返回的记录集有数据是执行很正常,后面的while语句执行也没问题
2楼:现在我单步执行到pRst=m_pConnection->Execute((_bstr_t)sql1,NULL,adCmdText);就出错了还没进入while呢
hemdacker 2009-02-12
  • 打赏
  • 举报
回复
写错了
while(pRst && !pRst->adoEOF)
cppzhentan 2009-02-12
  • 打赏
  • 举报
回复
单步看下sql1的命令是否正确

4,011

社区成员

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

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