MFC使用ADO运行Execute执行存储过程后内存泄漏 不知道怎么解决

visualvisual 2014-07-14 06:30:25
初始化一个_CommandPtr cmd
在执行cmd->Execute(NULL, NULL, adCmdUnknown);后内存就会增加 不知道怎么解决啊。请高人指点,谢谢!

代码:

int UserDAO::UpdateCharacterLvlAndExp( int cid, int lvl, int exp )
{
if (!dbConnect->m_bDBOpen)
{
return rERROR;
}
// 创建Command对象
_CommandPtr cmd;
_ParameterPtr pParam;

HRESULT hr = cmd.CreateInstance(__uuidof(Command));
if (FAILED(hr))
{
return rERROR;
}
string strSql = "dbo.UpdateCharacterLvlAndExp";
cmd->ActiveConnection = dbConnect->_connection_ptr;
cmd->CommandText = _bstr_t(strSql.c_str());
cmd->CommandType = adCmdStoredProc;

pParam.CreateInstance(__uuidof(Parameter));

pParam=cmd->CreateParameter(_bstr_t("CharacterId"),
adInteger,
adParamInput,
4);
pParam->Value=_variant_t(cid);
cmd->Parameters->Append(pParam);

pParam=cmd->CreateParameter(_bstr_t("Level"),
adInteger,
adParamInput,
4);
pParam->Value=_variant_t(lvl);
cmd->Parameters->Append(pParam);


pParam=cmd->CreateParameter(_bstr_t("Exp"),
adInteger,
adParamInput,
4);
pParam->Value=_variant_t(exp);
cmd->Parameters->Append(pParam);

pParam=cmd->CreateParameter(_bstr_t("Error"),
adInteger,
adParamOutput,
4);
cmd->Parameters->Append(pParam);

try
{
//return rSuccess;

_variant_t error;

cmd->Execute(NULL, NULL, adCmdUnknown);



error=cmd->Parameters->GetItem("Error")->GetValue();

if((int)(long)error>0)
{
pParam.Release();
cmd.Release();

return rERROR;
}
else
{
pParam.Release();
cmd.Release();

return rSuccess;
}
}
catch (_com_error &err)
{
TRACE(_T("数据库操作失败! 错误信息:%s, 文件:%s, 行:%d.\n"), err.ErrorMessage(), __FILE__, __LINE__);

return rERROR;
}

pParam.Release();
cmd.Release();

return rERROR;
}
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
visualvisual 2014-07-14
  • 打赏
  • 举报
回复
补充一下,只要把“cmd->Execute(NULL, NULL, adCmdUnknown);”注释,内存就不会增长。 使用机器人测试的,所以增长十分明显。
霜寒月冷 2014-07-14
  • 打赏
  • 举报
回复
亲,你发错版块了

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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