ADO Komponente neu verbinden nach Timeout
-
Ich verwende die ADO Komponenten um Daten eines SQL Servers abzufragen.
Wenn nun aus irgendeinem Grund der Server nicht mehr Antwortet, schlägt die Abfrage fehl, was ich in meinem Programm mittels eines try ... catch abfangen kann.
Nun soll aber (nachdem z.B. das Netzwerkkabel wieder eingesteckt wurde) die nächste Abfrage wie gewohnt stattfinden. Leider bricht die Anweisung an der gleichen Stelle ab bei der auch davor schon abgebrochen wurde.
Nur ein Neustart der Anwendung hilft.Kann ich die Verbindung irgendwie "zurücksetzten"?
Meine Anweisungen sind:
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(/*sqlBefehle*/); ADOQuery1->Open();
-
Du musst doch da irgendwo ein Connection-Objekt haben. Vllt dieses schließen und neuaufbauen.
-
Habe das ausprobiert:
ADOConnection1->KeepConnection = false; ADOConnection1->Close(); ADOQuery1->Close(); ADOQuery2->Close();
die Verbindung wird dann als geschlossen angezeigt, aber bei einem erneuten Verbinden können wieder keine Daten abgefragt werden.
Was kann ich noch machen?
-
Wieso schließt Du die ADOQuery-Objekte? Da werden doch nur die in den Client geladenen Datensätze entfernt. Lass' die mal offen oder Du musst diese ebenfalls wieder öffnen.
-
Wenn ich sie nicht schließe, dann wird die Verbindung (warum auch immer) offengehalten.