数据库读写失败,错误信息:无效指针

qq_27073787 2015-12-09 11:30:28
程序目的是提取出数据库中的某一个项目的值,调试运行到retrieveData函数出错
主程序关键代码如下:

CString strSql= "select * from sysalarm1 where id = (select max(id) from sysalarm1)";

m_pMain->retrieveData(strSql);


_variant_t varData;
CString varStr[12];

while(!m_pMain->pRecordset1->EndOfFile)
{
varData = m_pMain->pRecordset1->GetCollect("name");
if (varData.vt!=VT_NULL )
varStr[1] = varData;
else
varStr[1] = "";

m_pMain->pRecordset1->MoveNext();
}

m_pMain->pRecordset1->Close();


retrieveData函数如下:

int Cwelcome::retrieveData(CString strSql)
{

_ConnectionPtr pConn;
_RecordsetPtr pRecordset;
_bstr_t bstrSQL;
CString errormessage;
bstrSQL = strSql;

try
{
pRecordset->Open(bstrSQL,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
errormessage.Format("数据库读写失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return -1;
}

return 0;
}


这个小问题看了三天了,解决不了,希望大神给与指导,或者给我讲下pRecordset记录集和一般的sql语句,使用地方的区别,谢谢大家
...全文
306 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-12-10
  • 打赏
  • 举报
回复
帮结帖+蹭分
qq_27073787 2015-12-09
  • 打赏
  • 举报
回复
自己顶一下!
qq_27073787 2015-12-09
  • 打赏
  • 举报
回复
已自己解决,方法如下: select到的东西会被存到内存中,叫做一个记录集的地方,——recordset 我们需要连接完数据库之后,在连接记录集 后面再用几行简单的collect代码 就可以提取出数据库中的某个数据 所以记录集跟传统的sql语句,其实是两种东西,无冲突
qq_27073787 2015-12-09
  • 打赏
  • 举报
回复
补充: catch(_com_error e) { errormessage.Format("数据库读写失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息 这里运行后断掉的! catch到了错误信息

64,674

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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