Überprüfung vom Datenbankserver

Status
Nicht offen für weitere Antworten.
F

freichle

Gast
Wie kann ich in Java überprüfen, ob ein Datenbank Server für die PostgreSQL Datenbank aktiv ist, ohne dass ich eine Exception erhalte?
 
S

SlaterB

Gast
allgemein nebenbei: was hast du denn gegen Benachrichtigung durch Exception in diesem Fall?
für eine derart spezielle Anfrage ist eine einmalige Exception mit einmaligen Abfangen doch nicht so aufwändig?
 
G

Guest

Gast
Ich hab hab meherere Funktionen die auf eine Datenbank zugreifen, dabei sollte vorher überprüft werden ob die Datenbank auch aktiv ist. Sollte es nicht der Fall sein, so wird dementsprechend auf der GUI bestimmte Funktionen angezeigt und andere wiederum ausgeblendet.
 
S

SlaterB

Gast
ein solcher Test kommt natürlich in eine Operation
boolean checkXY()
dann ist es nur eine Zeile
 
F

freichle

Gast
Soweit ist mir das schon klar, aber wie sieht ein solcher Befehl aus der mit ein Boolean mit Checked zurückgibt?
 
S

SlaterB

Gast
von meiner Seite immer noch der Tipp: lasse es wie es ist mit der Exception, daran hat sich ja nix geändert?
 
F

freichle

Gast
ich will doch einfach nur eine funktion die mit ein true oder false zurückgibt mehr nicht....

ich will es einfach sauber implementiert haben
 

FenchelT

Bekanntes Mitglied
Hallo,

also ganz ehrlich, ich wuerde es auch so machen wie SlaterB.
Wenn Du ein True oder False haben moechtest, dann lass Dir doch diesen Wert aus einer Funktion zuruekgeben,
je nachdem ob eine Exception geworfen wurde oder nicht.

Solltest Du es anders wuenschen, ich kenne jetzt Postgres nicht, so sind fuer gewoehnlich Datenbank Dienste gestartet.
Du musst also nur pruefen ob der Dienst gestartet ist und dann hoffen, dass es keine Probleme mit der DB gibt, die Du ansprechen moechtest :autsch:

Ich denke, die andere Alternative ist schneller und nicht wirklich unsauber; dafuer gibt es doch extra die MOeglichkeit auf Exceptions zu reagieren.


Just my 2 Cent
 
T

tuxedo

Gast
Ich glaube du suchst sowas in der Art, oder?
->
Code:
public boolean doPostgresDbTest(){

try{
// Hier der Test der die Exception wirft, wenn der Zugriff nicht möglich ist
} catch (DatenbankNichtErreichbarOderBenutzbarException e) {
return false;
}

return true;

}

Ein spezieller Befehl der prüft ob eine DB aktiv ist oder nicht, ist in JDBC und Konsorten sicher nicht enthalten. Deshalb musst du ihn dir selbst basteln. Und das hier ist eine mögliche Lösung den Befehl selbst zu basteln. Weil das einzigste Feedback das du recht einfach erhälst, ob die DB benutzbar ist oder nicht, ist eine Exception. Und mit der lässt sich ja ganz easy ein boolscher Wert formen.

- Alex
 
G

Guest

Gast
Schade hatte gehofft was anderes zu finden als das man das feedback nur mit einer exception bekommt, aber trotzdem danke.
 
T

tuxedo

Gast
Selbst wenn du ne Methode gefunden hättest: Intern hätte sie es wohl auch nicht anders gemacht. Weil früher oder später gibts ein Timeout oder sonstetwas. Wie sonst sollte auch eine Datenbank, die du nicht erreichen kannst, dir aktiv mitteilen, dass sie nicht erreichbar ist? Das ist wie wenn jemand vor der Haustüre steht und frägt: "Jemand zuhause". Der der vor der Tür steht und wartet geht halt irgendwann wenn keiner Antwortet.. Und das ist dann die Exception.
Das was du haben wolltest ist einer der von drinnen zurückruft "nö, keiner da". Aber das geht ja nicht wirklich ;-) Weil dann wäre ja doch jemand zuhause...

Und für genau solche Dinge sind ja Exceptions ja da.

Exceptions sind nicht "böse" wie viele immer meinen. :)

- Alex
 

sparrow

Top Contributor
Das was du vorhast ist auch sehr gefährlich.
Erst dachte ich, dass es sich um eine einmalige Prüfung handelt (z. B. nach der Installation) auf die du im Programm so reagierst, dass die Software in einen Zustand versetzt wird die es überbaupt erst ermöglicht zu starten... aber auch da würde ich über die Exception gehen.
Dann habe ich gelesen, dass du das ganze mehrmals im Programm einsetzen willst.

Ich denke du willst so vorgehen, dass du erst schaust ob die Datenbank da ist und dann die Abfragen startest. Das verführt aber dazu davon auszugehen, dass zum Zeitpunkt der Abfrage die Datenbank wirklich erreichbar war. Darauf würde ich mich nicht verlassen. Gerade bei Zeitintensiven Abfragen kann es durchaus mal vorkommen, dass dei Verbindung aus irgend einem Grund unterbrochen wird.

Ich würde es auf jeden Fall über die Exception lösen, man kann ja diese auch im Programm interpretieren und passend reagieren (SQL Fehler z.B. falscher Datentyp, keine Verbindung, Autorisierung fehlgeschlagen....)

Ein toller Wahspruch: Exception sind nichts schlimmes... solange man sie nicht ignoriert.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben