Einzelnen Beitrag anzeigen

Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#9

AW: Abgebrochene ADOConnection wiederherstellen

  Alt 5. Jul 2012, 07:40
Hallo Leute,

ich habe jetzt eine Lösung für mein Problem gefunden.
Leider weiß ich zwar nicht wie man in meinem Fall einen Verbindungsausfall richtig erkennt, aber das Problem habe ich ein wenig umgangen. Das "SELECT 1" oder auch eine etwas tiefergehende Abfrage (bspw. nach dem ersten oder letzten Element einer bestimmten Tabelle) wie es mir von Iwo Asnet vorgeschlagen wurde, hat leider nicht funktioniert.

Hier mein Lösungsweg:
1. Ich gehe davon aus, dass die Verbindung zu meiner Datenbank immer besteht.
2. Über eine AppException fange ich alle Fehler meines Programms ab.
3. Entsteht der Fehler bei einer Datenbankabfrage versuche ich automatisch die Verbindung neu aufzubauen. Dazu trenne ich die Verbindung und starte anschließend einen TTimer.
4. Bei jedem Start des Timerevents versuche ich nun die Verbindung wieder aufzubauen.

Hier ein Teil des Quellcodes:
Delphi-Quellcode:
//im AppException-Event des Programms...
ADOC_CNC.Connected:=false;
Timer1.Enabled:=true;

//nun das Timer-Event...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //Verbindung neu aufbauen
  try
    ADOC_CNC.Connected:=true;
    if ADOC_CNC.Connected
      then
        Timer1.Enabled:=false;
  except
    //Verbindungsaufbau gescheitert -> neuer Versuch im nächsten Event
  end;
end;
Damit ist zwar nicht alles geklärt, aber ich kann damit zumindest erst mal weiter.
Danke euch allen!
Nico Bäger
  Mit Zitat antworten Zitat