CDaoDatabase.Close() verursacht Fehler
-
Ich muss aus verschiedenen Threads auf eine Access DB zugreifen,dafür verwende ich diesen Tip.
Da das mit den vielen Locks umständlich ist,und ich zwischen durch AfxDaoTerm() aufrufen muss,damit ich ich nicht zu viele client task habe,habe ich mir einen Klasse geschrieben die den Zugriff auf die Datenbank kapselt.
Die Klasse hat folgende Methoden:AskDb(CString DB_NAME_IN);//Der Konstuctor übernimmt den Pfad zur DB und ruft open auf void Open();//Öffnet die DB int AddRecordset(CString Sql);//Öffnet ein Recordset,liefert Index des Recordsets zurück CDaoRecordset* GetRecordset(int index);//Liefert den Zeiger auf ein Recordset void Execute(CString Sql);//Führt Sql aus void returnRecordset(int index);//Teilt der Klasse mit das ich nicht mehr auf das Recordset zugreife,und ruft Close()und dann Open() auf falls auf kein Recordset mehr zugegriefen wird void DeleteRecordset(int index);//Entfernt ein Recordset void Close();//Schliesst die DB und ruft AfxDaoTerm() auf
Hier ist die Methode die mir Probleme bereitet:
void AskDb::Close() { if(open&&allowClose) { CSingleLock Lock(&cs, TRUE); for(int x =0;x < Recordsets.GetSize();x++) { if(Recordsets[x]!=NULL) { Recordsets[x]->Close(); delete Recordsets[x]; } } Recordsets.RemoveAll(); DB->Close();//Hier stürzt das Programm mit einen Fehler in Dao350.dll ab delete DB; AfxDaoInit(); AfxDaoTerm(); Lock.Unlock(); open = false; } }
Was kann einen Fehler bei CDaoDatabase::Close() auslösen?
[ Dieser Beitrag wurde am 04.02.2003 um 16:53 Uhr von Andorxor editiert. ]
[ Dieser Beitrag wurde am 05.02.2003 um 09:38 Uhr von Andorxor editiert. ]