关于ADO链接DB的初始化与释放问题***************************

god_sun 2007-11-26 05:00:49
UINT pRunExcelThread (void* p)
{
char acConnStr[512];
memset (acConnStr, 0, 512);
sprintf (acConnStr, "Provider=SQLOLEDB;Server=test;Database=test;uid=test;pwd=test");
if (pAdCn.Open (acConnStr))
{
pAdCn.Close ();
}
return 0;
}

bool CADOConnection::Open (char *acConnStr)
{
::CoInitialize(NULL);
HRESULT hr = m_Con.CreateInstance("ADODB.Connection");
if(SUCCEEDED (hr))
{
m_Con->Open (acConnStr, "", "", adModeUnknown);
}else
{
AfxMessageBox("创建_ConnectionPtr对象失败");
m_Con.Release ();
m_Con=NULL;
::CoUninitialize();
return false;
}
hr = m_cmmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
{
AfxMessageBox("创建_CommandPtr对象失败");

m_cmmd.Release ();
m_cmmd=NULL;

m_Con.Release ();
m_Con=NULL;
::CoUninitialize();
return false;
}

m_cmmd->ActiveConnection = m_Con;
m_cmmd->CommandType = adCmdStoredProc;
return true;
}


bool CADOConnection::Close (void)
{
if (m_cmmd!=NULL)
m_cmmd.Release();
if ((m_Con!=NULL) && (m_Con->State))
m_Con->Close();
if (m_Con!=NULL)
m_Con.Release();

m_Con = NULL;
m_cmmd = NULL;

::CoUninitialize();
return true;
}

pAdCn 是CADOConnection 的一个对象。
现在问题。我反复调用线程测试的时候,发现内存总是在涨,麻烦高手看一下哪里资源没有释放!
m_Con,,m_cmmd是CADOConnection 的两个成员!
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shakaqrj 2007-11-28
  • 打赏
  • 举报
回复
不知道俄
god_sun 2007-11-28
  • 打赏
  • 举报
回复
没人解答吗~~
god_sun 2007-11-27
  • 打赏
  • 举报
回复
这里的人少的可怜
god_sun 2007-11-27
  • 打赏
  • 举报
回复
我的程序有没有问题呢?
shakaqrj 2007-11-26
  • 打赏
  • 举报
回复
用afxoleinit()看看

4,011

社区成员

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

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