![]() |
Datenbank: MySQL • Zugriff über: TADO
TADOCOnnection wiederverbinden
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:
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.
...
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; 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. |
Re: TADOCOnnection wiederverbinden
Ich würde für MySQL eh nicht über ADO und ODBC gehen sondern direkt z.B. mit
![]() |
Re: TADOCOnnection wiederverbinden
Die Frage hier ist, ob ich dadurch die Verbindung wieder aufgebaut bekomme und nicht wie hier scheinbar aus dem Cache kriege?
|
AW: TADOCOnnection wiederverbinden
Habe auch dieses Problem, kennt hier schon jemand eine Lösung?
|
AW: TADOCOnnection wiederverbinden
Eine Lösung ist nicht ADO zu verwenden.
Ansonsten unterstützt ADO einen Connection Pool. Schau mal ob du diesen u.U. leeren kannst. |
AW: TADOCOnnection wiederverbinden
Danke für den Anstoß!
Ich denke mit dem Eintrag "OLE DB Services=-4;" im Connectionstring der TadoConnection sollte ich das Problem bei mir nun behoben haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz