关于 ADO Exception 的问题

PatrickGamp 2001-04-25 11:58:00
_RecordsetPtr pRec;
pRec = NULL;
try
{
pRec.CreateInstance(__uuidof(Recordset));
pRec->Open(_bstr_t(szSQL), gpAdoConnection.GetInterfacePtr(),
adOpenStatic, adLockOptimistic, adCmdText);
;/// PutValue to a certain field,result in an error
pRec->Update();
}
catch(...)
{
if(pRec != NULL)
{
if(pRec->GetState() == adStateOpen)
pRec->Close();//错在这里
pRec=NULL;
}
return -1;
}
if(pRec != NULL)
{
if(pRec->GetState() == adStateOpen)
pRec->Close();//正常退出时正常
pRec=NULL;
return 0;

以上代码为什么会导致错误?当 ADO 发生错误时即使检测到pRec->GetState() == adStateOpen 为什么仍然不能pRec->Close();
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
PatrickGamp 2001-04-27
  • 打赏
  • 举报
回复
答者有分,尽管我不认为你们给出了正确答案
codeJie 2001-04-25
  • 打赏
  • 举报
回复
试试用下面的函数扑捉一下错误,然后再好好分析一下,应该能找到。
/////////////////////////////

void OutputComError(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
char bstrOutput[1024];

sprintf(bstrOutput, "Code = %08lx\nCode meaning = %s\nSource = %s\nDescription = %s\n",
e.Error(), e.ErrorMessage(), (LPCSTR) bstrSource, (LPCSTR) bstrDescription);

MessageBox(NULL,(LPCTSTR)bstrOutput, "ADO Com Error !", MB_ICONERROR | MB_OK);
}
////////////////////////////
用法:
try
{

.......
}
catch (_com_error &e)
{
OutputComError(e);
}
codeJie 2001-04-25
  • 打赏
  • 举报
回复
太短了,错误可能不在这里。
jsd198 2001-04-25
  • 打赏
  • 举报
回复
try
{

}
catch(_com_error * e)
{

}
catch(...)
{

}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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