Ich verwende zwar kein Zeos, aber prinzipiell mache ich es so, das ich vor jeder Datenbankaktion eine Verbindungsprüfung einbaue, also so etwa:
Delphi-Quellcode:
...
CheckConnection;
MyDBCommand.Execute;
...
Und die Methode 'CheckConnection' schickt ein 'select 1' zum Server. Wenn das knallt und die
Exception mir sagt, das die Verbindung unterbrochen wurde (und nur dann!), baue ich sie wieder auf (1 Versuch). Wenn das nicht klappt, ist eh Hopfen und Malz verloren und ich melde eine
Exception, das die
DB nicht erreichbar ist.
SQL-Code:
Procedure TMyDataModule.CheckConnection;
Procedure _TryConnection;
Begin
MyConnection.Connected :=
True;
MyConnection.executeI('
select 1');
End;
Begin
Try
_TryConnection;
Except
On E:EConnectionLostConnection Do
_TryConnection;
On E:
Exception Do Raise E;
End
End;