Bonjour,
Voila j'ulise ADO pour me connecter a une bdd Access
Donc lorque je cree un objet ADO par exemple
dans un constructeur :
ensuite dans le destructeur de fais ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CBaseDeDonnee::CBaseDeDonnee() { m_ADO = new ADO; }
En ce qui concerne le constructeur de ADO je fais rien de special si ce n'est les pointeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CBaseDeDonnee::~CBaseDeDonnee() { delete m_ADO; }
A NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _RecordsetPtr m_pRecord; _CommandPtr m_pCommand; _ConnectionPtr m_pConnexion;
dans le destrcuteur je fais :
Tout ceci fonctionne sauf lorsque que je sors du destructeur (appel du delete)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 (...) { }
PS: je rajoute le code de Deconnect()
En esperant avoir une reponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
sur ce bonne continuation
Partager