Memory leak ADO-MSDAORA
Date: Thu, 08 Jul 1999 13:47:16 +0200
Message-ID: <37848FC4.C5373631_at_ping.be>
ADO Memory leak.
---------------
The following problem occurs with MSDAORA OleDB provider only, not
with other providers like MSDASQL or Microsoft.Jet.OLEDB.4.0;
The following program leaks if the CString SELECT is joining 2 tables.
SELECT --> SELECT
DISTINCT A.id, B.type
FROM A,B
WHERE A.id
= '19990610-0007'
if SELECT is a simple query on one table the program does not leak.
SELECT --> SELECT
id
FROM A
WHERE A.id
= '19990610-0007'
//////////////////////////////////////////////////////////////////////
#import <msado15.dll>
rename ("EOF", "adoEOF")
void CTestAdoLeakDlg::OnGo()
{
::CoInitialize(NULL);
_bstr_t Connect("Provider=MSDAORA.1;Data
Source=CTMC;User ID=DRO; Password=RSQ;");
ADODB::_ConnectionPtr
cn;
HRESULT hr = cn.CreateInstance
(__uuidof (ADODB::Connection));
cn->Open (Connect,
"", "", -1);
CString SELECT;
SELECT.Format("SELECT
DISTINCT A.id, B.type FROM A,B WHERE A.id = '19990610-0007'");
);
_bstr_t Source(SELECT);
do{
ADODB::_RecordsetPtr
rst = NULL;
hr = rst.CreateInstance(__uuidof(ADODB::Recordset));
rst->CursorLocation
= ADODB::adUseServer;
rst->CursorType
= ADODB::adOpenForwardOnly;
rst->LockType
= ADODB::adLockReadOnly;
rst->CacheSize
= 1;
hr = rst->Open(Source,
cn.GetInterfacePtr(), ADODB::adOpenDynamic,ADODB::adLockOptimistic,-1);
do{
hr = rst->MoveNext();
}while(!rst->adoEOF);
hr = rst->Close();
hr = rst->Release();
// Leaks
}while(true);
::CoUninitialize();
}
Thank you for any solution
you can provide
Charles.
Received on Thu Jul 08 1999 - 13:47:16 CEST