[MFC] ADO et operateur delete
Bonjour,
Voila j'ulise ADO pour me connecter a une bdd Access
Donc lorque je cree un objet ADO par exemple
dans un constructeur :
Code:
1 2 3 4 5
|
CBaseDeDonnee::CBaseDeDonnee()
{
m_ADO = new ADO;
} |
ensuite dans le destructeur de fais ca:
Code:
1 2 3 4 5
|
CBaseDeDonnee::~CBaseDeDonnee()
{
delete m_ADO;
} |
En ce qui concerne le constructeur de ADO je fais rien de special si ce n'est les pointeurs
Code:
1 2 3 4
|
_RecordsetPtr m_pRecord;
_CommandPtr m_pCommand;
_ConnectionPtr m_pConnexion; |
A NULL
dans le destrcuteur je fais :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
try
{
// si nous sommes connectes on se deconnecte
if (m_pConnexion != NULL) { Deconnect(); }
//fermeture de la librairie COM
CoUninitialize();
}
catch (...)
{
} |
Tout ceci fonctionne sauf lorsque que je sors du destructeur (appel du delete)
http://i149.exs.cx/img149/4778/sanstitre5we.jpg
PS: je rajoute le code de Deconnect()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
//////////////////////////////////////////////////////////////////////
// Deconnexion de la base de donnee
//////////////////////////////////////////////////////////////////////
bool ADO::Deconnect()
{
try
{
//fermeture du curseur (si ouvert)
if (m_pRecord->State != adStateClosed)
m_pRecord->Close();
//Fermeture de la connexion (si connecte)
if (m_pConnexion->State != adStateClosed)
m_pConnexion->Close();
m_pConnexion = NULL;
m_pCommand = NULL;
m_pRecord = NULL;
}
catch (_com_error & e)
{
if (cpt != 3) { cpt++; Sleep(1000); Deconnect(); }
cpt = 0;
m_Erreur = (LPCSTR)e.Description();
m_Erreur = m_Erreur + "\n" + (LPCSTR)e.Source();
}
return true;
} |
En esperant avoir une reponse
sur ce bonne continuation