Anzeige:
Ergebnis 1 bis 4 von 4

Thema: PostgreSQL - JDBC - Fehlerbehandlung

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.04.2005
    Beiträge
    5

    PostgreSQL - JDBC - Fehlerbehandlung

    Moin,

    ich beschäftige mich gerade ein wenig mit PostgreSQL+JDBC, wie der Titel schon sagt. Bin dabei ein kleines Tool zu schreiben, mit dem man u.a. beliebige Anfragen an die DB stellen kann. Das funktioniert auch schon recht gut, aber die Fehlerbehandlung macht mir Probleme.
    Frage:
    Wie kann ich auf fehlerhafte SQL-Statements reagieren, also etwas detaillierter als nur eine allgemeine Error-Message? Wie bekomme ich eine spezielle Fehlermeldung/Fehlercode o.ä. aus der DB, was ich wiederum durch mein Anwendungsprogramm ausgeben lassen kann?

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.07.2000
    Ort
    Österreich
    Beiträge
    189
    wenn du ein query ausführst wird im fehlerfall eine SQLException geworfen in der alle informationen vorhanden sind (sein sollten):

    http://java.sun.com/j2se/1.5.0/docs/...Exception.html

    die frage ist ob der postgresql jdbc das auslesen der error codes untersützt. das pqxx (C++) interface tut das z.b. nicht.

  3. #3
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Wenn ich vermeiden will, dass mein Programm abstürzt (der Dump ist häufig sehr aussagekräftig), werfe ich eine erweiterte Fehlermeldung:

    try{
    ...
    }catch(SQLException sqle){
    throw new SQLException("Fehler in Klasse:Funktion\n Parameter: ...\n " + sqle.getMessage()
    }

    Das hilft bei der Fehlersuche ungemein, bringt aber für die "Auslieferungsversion" nichts.
    Da geht es kaum aussagekräftiger als sqle.getMessage(), evtl noch sqle.getLocalizedMessage(). Du kannst dir natürlich eine eigene Fehlerklasse bauen, aber das ist sehr viel Arbeit, wenn du z.B. den SQL-String vernünftig parsen willst.
    Das Ziel ist das Ziel.

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.04.2005
    Beiträge
    5
    Danke für die Hilfe, auch wenn es nicht ganz das Erwünschte lieferte. Ich hatte schon etwas mit der SQLException rumprobiert:
    try {
    ...
    }
    catch(SQLException e)
    {
    e.getNextException();
    do {
    // Ausgabe von Fehlermeldung und Fehlercodes
    System.out.println(e.getMessage());
    System.out.println("ANSI-92 Code: "+e.getSQLState());
    System.out.println("DB-Code: "+e.getErrorCode());
    // Nächste Exception abrufen.
    e = e.getNextException();
    // Gibt es weitere Exceptions?
    } while(e != null);

    Den Schnipsel Code hatte ich auf irgendeiner Java-Seite gefunden.
    getMessage() funktioniert, getSQLState() und getErrorCode() leider nicht. Das ist zwar besser als gar nichts, aber so richtig schön ist es nicht.
    Ich hatte eigentlich nicht vor, eine komplett eigene Syntaxanalyse zu schreiben, aber so wie es aussieht, könnte es langsam lohnen. Vielleicht ist es ja ganz interessant.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •