MFC ADO _RecordsetPtr -> adoEOF 抛出异常问题

yangkunhenry 2018-07-06 08:53:05


try{
sql.Format("select * from PCBAProductList where SN_STR <= '%s' and SN_END >= '%s' and Enable = '1'",m_sninput,m_sninput);

//没有找到记录
m_pRst=m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);

//我的理解是直接回判断到adoEOF 是ture,但是这里直接跳到了catcn,抛出了异常
if(m_pRst->adoEOF == TRUE)
{
m_error_code = "Can not find this SN in table!";
return FALSE;
}

}
catch(_com_error e)
{
CString errmessage = _T("");
char* buf = _com_util::ConvertBSTRToString(e.Description());
errmessage.Format(_T("Warning: exception desception:%s | errmessage:%s"),buf,e.ErrorMessage());
m_error_code = errmessage;
return FALSE;
}


异常内容:BOF或 EOF中有一个是“真”,或者当前的记录被删除,所需的操作要求一个当前的记录。
...全文
279 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangkunhenry 2018-07-06
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
将要执行的sql语句写到日志文件中
从日志文件中复制将要执行的sql语句
粘贴到查询分析器中手动执行
……

嗯,谢谢指导!
SQL我试过没有问题,问题出在EOF上


if(m_pRst->adoEOF == TRUE)//
{
m_error_code = "Can not find this SN in table!";
return FALSE;
}

m_pRst->adoEOF 返回值是VARIANT_BOOL 这里返回是-1了
typedef short VARIANT_BOOL;

#define VARIANT_TRUE ((VARIANT_BOOL)-1)

谢谢各位!

yangkunhenry 2018-07-06
  • 打赏
  • 举报
回复
引用 1 楼 youyingbo 的回复:
Enable = '1'
------
这个去掉能查询的到吗?Enable是不是关键字?

也不能,我这边加的就是无法没有记录的SN。问题找到了
楼下我会贴出来。谢谢啦!
赵4老师 2018-07-06
  • 打赏
  • 举报
回复
将要执行的sql语句写到日志文件中
从日志文件中复制将要执行的sql语句
粘贴到查询分析器中手动执行
……
tiger波波 2018-07-06
  • 打赏
  • 举报
回复
Enable = '1'
------
这个去掉能查询的到吗?Enable是不是关键字?

4,012

社区成员

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

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