Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankverbindung verloren (https://www.delphipraxis.net/99925-datenbankverbindung-verloren.html)

Nico80 19. Sep 2007 16:48

Datenbank: Interbase • Version: 7.1 • Zugriff über: IBX

Datenbankverbindung verloren
 
Hallo an alle Interbase und IBX-Spezialisten,

wie merke ich das meine Datenbankverbindung verloren gegangen ist?
Gibt es dazu Ereignisbehandlungsroutinen oder sonstige Mechanismen?
Exception-Handling geht auch, aber die Datenbankverbindung kann ja aus verschiedenen Gründen nicht mehr existieren.
z.B. IBServer ist inaktiv, Datenbankserver ist ausgeschaltet, etc.

Danke für Tipps...

shmia 19. Sep 2007 18:37

Re: Datenbankverbindung verloren
 
Normalerweise bist du ja irgendwo in deinem Programm während die DB-Verbindung gekappt wird.
Die nächste Abfrage wird dann 1.) einige Sekunden dein Programm stillegen und 2.) dann eine Exception erzeugen.
Die Chancen sind gering, dass sich dein Programm davon noch erholen kann.
Du müsstest die Connection wieder öffnen und auch alle Queries, die vorher offen waren.

RavenIV 20. Sep 2007 08:14

Re: Datenbankverbindung verloren
 
Zitat:

Zitat von Nico80
wie merke ich das meine Datenbankverbindung verloren gegangen ist?

Du merkst das daran, dass sie nicht mehr da ist.

Ernsthaft:
Wenn die Verbindung zur DB weg ist, müsstest Du eigentlich das Programm neu starten oder zumindest in einen definierten Zustand zurückfahren.
Woher soll die Software zu einem undefinierten Zeitpunkt wissen
- welche Querys, Cursors, usw. gerade offen waren
- auf welchem Datensatz diese gerade gestanden haben
- wie der Status der Transaktionen war.

Normalerweise geht der Programmierer davon aus, dass eine DB immer verfügbar ist und baut keine Sicherheitsmassnahmen ein.
Erst wenn es knallt, dann wird sich darum gekümmert.

Nico80 25. Sep 2007 08:11

Re: Datenbankverbindung verloren
 
Also mit TIBDatabase.TestConnected kann man die tatsächliche Verbindung zur DB prüfen (Im Gegensatz zu .Connected).
Ich benutze Interbase und Firebird. Leider verhalten sich die Funktionen bei den beiden DBs unterschiedlich.
Wenn ich Events an der DB registiert habe (TIBEvent) und den Firebird-Server ausschalte und dann TestConnected aufrufe, bekomme
ich ziemlich böse Zugriffsverletzungen in der gds32.dll.

Hat jemand shcon Erfahrungen mit der Methode .TestConnected?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz