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. ]


Anmelden zum Antworten