关于ADO链接DB的初始化与释放问题***************************
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 的两个成员!