AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verbindung zu Datenbank prüfen

Verbindung zu Datenbank prüfen

Ein Thema von Opa Knack · begonnen am 14. Aug 2008 · letzter Beitrag vom 15. Aug 2008
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Verbindung zu Datenbank prüfen

  Alt 14. Aug 2008, 02:16
Datenbank: MySQL • Version: 5 • Zugriff über: SciBit MyComponents
Hallo,

auch wenn diese Frage hier wahrscheinlich schon gestellt wurde: Ich habe die Antwort trotz intensiver Suche nicht finden können. Liegt wohl an der Uhrzeit.

Folgendes Problem: Ich greife mit MyComponents auf eine MySQL-Datenbank zu (da ich ein ungeduldiger Mensch bin, habe ich nach mehreren Versuchen davon abgelassen, ZEOS verwenden zu wollen). Um sicherzustellen, dass die Datenbank auch wirklich verfügbar ist, möchte ich die Verbindung beim Programmstart abfragen. Rein aus meinem (wahrscheinlich zu kruden) Verständnis heraus habe ich's mit

Delphi-Quellcode:
        
try
  DBServer.Connect;
except
  showmessage('geht nicht');
end;
probiert, was zur Folge hat, dass nach dem Programmstart erst einmal nichts geschieht, bis ich dann irgendwann eine Fehlermeldung erhalte - aber leider nicht mein (besonders einfallsreiches) "geht nicht".

Meine Frage ist nun, wie ich die Verbindung testen und bei Nichtbestehen darauf reagieren kann.

Vielen Dank und gute Nacht
Opa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Verbindung zu Datenbank prüfen

  Alt 14. Aug 2008, 06:37
Du behandelst ja keine Exception
on Exception ...
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Verbindung zu Datenbank prüfen

  Alt 14. Aug 2008, 08:53
Moin Opa,

so kannst du den genauen Grund für das Nichtzustandekommen der Verbindung an den Benutzer melden:

Delphi-Quellcode:
try
  DBServer.Connect;
except
  on E: Exception do
    ShowMessage(E.Message);
end;
Beim Ereignis AfterConnect() kannst du dann die nötigen DataSets öffnen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Verbindung zu Datenbank prüfen

  Alt 14. Aug 2008, 12:31
Hm,

trotzdem müsste doch "geht nicht" kommen, oder?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Verbindung zu Datenbank prüfen

  Alt 14. Aug 2008, 13:20
Hallo,

sicher doch. Oft wird die IDE aber im Debug-Modus betrieben, so dass die echten Exceptions durchschlagen, bevor die eigene Fehlerbehandlung greift. Der von Markus skizzierte und von mir ausgefeilte Code erlaubt lediglich den Zugriff auf die Exception selbst, was ein paar Optionen bei der eigenen Fehlerbehandlung schafft.

Freundliche Grüße
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#6

Re: Verbindung zu Datenbank prüfen

  Alt 15. Aug 2008, 00:16
Hallo,

erst einmal Danke für die bisherigen Tipps. Geholfen haben sie mir leider nicht.

Ich habe die beiden mir logischen Varianten (einmal direkt aus Delphi heraus, einmal ohne Delphi im Hintergrund) ausprobiert und bekomme trotzdem jedesmal die gleiche Fehlermeldung. Theoretisch bräuchte ich etwas in der Art "database.available" (wobei es das natürlich nicht gibt), mir dem ich beim Versuch des Connects prüfen kann, ob dieser auch wirklich stattgefunden hat bzw. mit dem ich prüfen kann, ob die Datenbank überhaupt erreichbar ist. Klar könnte ich auch den herkömmlichen Fehlerhinweis verwenden, nur ist der a) in englisch und b) nicht besonders hilfreich. Dem Anwender sollen die möglichen Fehlerursachen (falsche Logindaten, Datenbank nicht verfügbar) aufgezeigt werden.

Habt ihr noch weitere Ideen?

Danke und Gruß
Opa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Verbindung zu Datenbank prüfen

  Alt 15. Aug 2008, 06:34
Angaben zum Grund sollte das Exception-Objekt liefern
Markus Kinzler
  Mit Zitat antworten Zitat
automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Verbindung zu Datenbank prüfen

  Alt 15. Aug 2008, 08:47
Hallo!

Wie das bei mysql aussieht, weiß ich nicht genau, aber bei anderen Datenbanken hilft es eine Transaktion zu starten und bei einer Exception besteht keine Verbindung zur Datenbank. Bei bestehender Verbindung muss man diese (leere) Transaktion dann noch mit Commit oder Rollback beenden.

Grüße
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Verbindung zu Datenbank prüfen

  Alt 15. Aug 2008, 10:53
Zitat von Opa Knack:
Um sicherzustellen, dass die Datenbank auch wirklich verfügbar ist, möchte ich die Verbindung beim Programmstart abfragen.
Dein Ansatz ist schon falsch!!
Man prüft nicht, ob eine Datenbank vorhanden ist und verbindet sich dann zur Datenbank.
Das wäre eine sinnlose Prüfung.
Könnte ja sein, dass die Datenbank genau zwischen der Prüfung und dem wirklichen Verbinden runtergefahren wird.
Nein, man verbindet sich einfach zur Datenbank und entweder es klappt oder es klappt nicht.
Wenn es nicht klappt, dann gibt man dem Benutzer eine aussagekräftige Meldung; das ist ganz wichtig!
Delphi-Quellcode:
try
  DBServer.Connect;
except
  on E: Exception do
  begin
    // wir geben dem Benutzer ein Maximum in Infos
    // was ist passiert, welche Datenbank und was war der eigentliche Fehler ?
    E.Message := 'Verbindung zur Datenbank '+DBServer.DatabaseName + ' fehlgeschlagen!'#13#10+
      E.Message;
    raise; // Exception erneut auslösen
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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