MyException - 我的异常网
当前位置:我的异常网» VC/MFC » _Recordset的Open和Close有关问题

_Recordset的Open和Close有关问题

www.myexceptions.net  网友分享于:2013-04-10  浏览:3次
_Recordset的Open和Close问题
本帖最后由 skyandcode 于 2013-04-07 13:00:40 编辑
先看一下代码:

_RecordsetPtr& CAdo::OpenTable(CString strSql)
{
ASSERT(!strSql.IsEmpty());
try
{
pRec.CreateInstance(__uuidof(Recordset));
pRec->Open(_bstr_t(strSql),pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error* e)
{
AfxMessageBox(e->Description());
}

return pRec;
}

void CAdo::CloseTable()
{
if(pRec!=NULL)
pRec->Close();
}



这是我的Open和Close函数,问题是:
CString strSql,strNum;
strSql.Format(_T("select u_num from T_Login where u_name='%s'"),strName);
_RecordsetPtr pRec;
pRec=theApp.m_adoOperate.OpenTable(strSql);
strNum=(LPCSTR)(_bstr_t)pRec->GetCollect((long)0);
// theApp.m_adoOperate.CloseTable();
return strNum;

我一把注释那行的注释去掉,也就是Open后调用Close程序运行时就崩溃了。如果注释起来就没问题了,
sql语句时正确的。请问是什么原因啊?

------解决方案--------------------
异常捕获写错了,改成这样试试,也可以试试这个ADO类。
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有