Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

TADOCOnnection wiederverbinden

  Alt 21. Apr 2006, 08:00
Datenbank: MySQL • Zugriff über: TADO
Hallo zusammen,

habe das folgende kleine/große Problem:
Die Verbindung zum MySQL-Server wird über die ODBC-Schnittstelle zum MySQL ODBC Driver hergestellt.
Es kann durchaus vorkommen, dass sich der MySQL-Server verabschiedet hat und somit kein Zugriff auf die Datenbank möglich ist. Diesen Fehler fange ich so ab:

Delphi-Quellcode:
...
try
  SQL_Funktion();
except
  Err := AdoConnection.Errors.Item[AdoConnection.Errors.Count - 1].Description;
  if Pos('MySQL server', Err) > 0 then
  begin
    AdoConnection.Close;
    try
      AdoConnection.Open;
    except
      Showmessage('Server connection failed!' + #13 + 'Application will be closed!');
      Application.Terminate;
    end;
  end;
end;
Falls ein Fehler in der SQL-Funktion auftritt, hole ich mir in der except-Routine den letzten Fehler aus der Datenbank. Falls in dieser Meldung "MySQL server" auftritt, dann versuche ich die Verbindung zu schließen und erneut aufzumachen.
Hier passiert schon der erste Fehler. Da das Netzwerkkabel ausgestöpselt ist, kann die Datenbank nicht erfolgreich verbunden werden, aber er sagt trotzdem dass die Verbindung steht (AdoConnection.Connected = true).
Der zweite Fehler der dann folgt ist, dass ich eben ein Dataset habe, welches immer wieder im Timer einen SQL Befehl ausführt. Und da die Datenbankverbindung nicht steht, kann somit das Dataset auch keine Anweisung ausführen. Was dann zwnagsläufig zu einer Endlosschleife führt.

Ich hoffe mir kann da jemand wieterhelfen.

Gruß, Moony
Scheinbar verbindet die ODBC-Schnittstelle nicht wirklich wieder die Datenbank, sondern holt die Verbindung aus dem Cache.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat