Ich verwende FIBPlus 6.25 und habe ein Problem mit Datenbank-Verbindungen, die abgebaut, aber nicht wieder aufgeaut werden.
Merkwürdigerweise wird eine Datenbankverbindung nach einer gewissen Dauer von Inaktivität abgebaut und bei der nächsten Verwendung gibt es dann eine Exception. Dieser Abbau tritt im übrigen nur auf, wenn die Verbindung remote geschieht, also nicht zu localhost.
Laut der Doku sollte es einen automatischen Reconnect geben, aber ich bekomme das nicht hin. Was habe ich gemacht?
Nun, ich habe eine pFIBDatabase Komponente und rufe bei dieser folg auf:
Delphi-Quelltext
1: 2: 3: 4: 5:
| DB.CanTimeOut := False; DB.WaitForRestoreConnect := 15000; DB.Timeout := 0; DB.WaitRestoreConnect; DB.Open; |
Desweiteren implementiere ich die Callbacks:
OnAfterRestoreConnect und OnErrorRestoreConnect
Diese werden aber zu keiner Zeit angesprungen. Außerdem habe ich noch OnDisconnect implementiert, aber auch das wird nicht angesprungen.
Ich teste, indem ich mein Programm starte und dann das Netzwerkkabel rausziehe, 5 Sekunden warte, dann wieder reinstecke und auf einen Button drücke, der eine Query absetzt, also auf die Datenbankverbindung zugreift. Dann bekomme ich immer eine Exception.
Ich hätte eigentlich erwartet, daß die OnConnectionLost angesprungen wird und entweder die OnAfterRestoreConnect (falls Reconnect klappt) oder OnErrorRestoreConnect (im Fehlerfall) angesprungen wird. Aber nichts dergleichen passiert.
Was mache ich falsch?
Im Übrigen habe ich auch beim Support nachgefragt, aber die hüllen sich in Schweigen.
Moderiert von
raziel: Delphi-Tags hinzugefügt.