JDBC-Erkundung SQLException-Analyse

JDBC-Erkundung SQLException-Analyse

1. Übersicht über SQLException

Wenn bei der Verwendung von JDBC zur Interaktion mit einer Datenquelle (die Datenquelle in diesem Artikel stellt die Datenbank dar, die wir tatsächlich verwenden) ein Fehler auftritt, wird eine Ausnahme namens SQLException ausgelöst. Eine SQLException enthält die folgenden Informationen, die uns helfen, den Fehler besser zu lokalisieren.

Der Fehler weist auf Folgendes hin:

Verwenden Sie die Methode getMessage, um es abzurufen.

SQLState-Code

Der Code besteht aus fünf Buchstaben und Zahlen. Die meisten Codes sind von ISO/ANSI und der Open Group (X/Open) standardisiert, es gibt jedoch immer noch einige Codes, die von den Datenbankanbietern selbst implementiert werden.

Verwenden Sie die Methode getSQLState, um es abzurufen.

Fehlercode

Im Gegensatz zu SQLState sind Fehlercodes vom Datenbankanbieter definierte Ganzzahlwerte, wobei die Möglichkeit besteht, dass tatsächliche Fehlercodes von der zugrunde liegenden Datenquelle zurückgegeben werden.

Verwenden Sie die Methode getErrorCode, um es abzurufen.

Ursache

Gibt die Ursache der Ausnahme an. Durch kontinuierliches Aufrufen der Methode getCause können Sie die zugrunde liegende Ursache der Ausnahme ermitteln.

Ausnahmekette

Wenn mehrere Fehler auftreten, werden die Ausnahmen über diese Kette referenziert.

Verwenden Sie die Methode getNextException, um es abzurufen.

2. SQLException-Beispiel

öffentliche statische Leere printSQLException (SQLException e) {
  für(Throwable e :ex){
    if (e Instanz von SQLException){
      wenn (ignoreSQLException(((SQLException)e).getSQLState()) == false) {
        e.printStackTrace(System.err);
        System.err.println("SQLState: " + ((SQLException)e).getSQLState());
        System.err.println("Fehlercode: " + ((SQLException)e).getErrorCode());
        System.err.println("Nachricht: " + e.getMessage());
        Throwable t = Beispiel: getCause ();
        während(t != null){
          System.out.println("Ursache: " + t);
          t = t.getCause();
        }
      }
    }
  }
}
öffentliche statische Boolesche ignoreSQLException(String sqlState){
  wenn(sqlState == null){
    System.out.println("Der SQL-Status ist nicht definiert");
  }
  // X0Y32: Jar-Datei existiert bereits im Schema
  wenn (sqlState.equalsIgnoreCase("X0Y32")) {
    gibt true zurück;
  }
  // 42Y55: Tabelle existiert bereits im Schema
  wenn(sqlState.equalsIgnoreCase("42Y55")){
    gibt true zurück;
  }
  gibt true zurück;
}

Hinweis: Der obige Code stammt von [http:docs.oracle.com] (http://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.html).

3. SQLWarning

SQLWarning ist eine sehr wichtige Unterklasse von SQLException, die verwendet wird, um Warnungen anzuzeigen, die während des Datenbankzugriffs auftreten. Ausnahmsweise stoppt eine SQLWarning die Ausführung der Anwendung nicht, sondern macht den Benutzer darauf aufmerksam, dass nichts wie geplant geschieht. Eine Warnung könnte Sie beispielsweise darüber informieren, dass der Versuch, eine Berechtigung zu widerrufen, erfolglos war, oder dass beim Anfordern der Trennung der Verbindung möglicherweise ein Fehler aufgetreten ist.

SQLWarning kann von Connection, Statement (einschließlich PreparedStatement und CallableStatement) oder ResultSet gemeldet werden. Diese Klassen haben alle eine getWarnings-Methode. Nur durch Aufrufen dieser Methode können Sie die erste Warnung sehen, die für das aufrufende Objekt gemeldet wird. Wenn getWarning eine Warnung zurückgibt, können wir seine Methode getNextWarning aufrufen, um die nächste Warnung zu erhalten. Bei jeder Ausführung einer Anweisungszeile wird die Warnung der vorherigen Anweisungszeile gelöscht. Dies bedeutet, dass wir die Warnungen vor der Ausführung der nächsten Anweisungszeile abrufen müssen, wenn wir sie aus der Berichtsverarbeitung abrufen möchten.

DataTruncation ist die häufigste Warnung mit SQLState-Code 01004 und weist auf Probleme beim Lesen oder Schreiben von Daten hin. DataTruncation verfügt über viele Methoden, die uns helfen zu verstehen, welche Spalten- oder Parameterdaten abgeschnitten werden, ob die Abschneidung beim Lese- oder Schreibvorgang erfolgt, wie viele Bytes übertragen werden sollen und wie viele Bytes tatsächlich übertragen werden.

4. Andere Arten von SQLException

BatchUpdateException: Wird ausgelöst, wenn während eines Batch-Aktualisierungsvorgangs ein Fehler auftritt. Zusätzlich zur bereitgestellten Meldung werden alle Anweisungen, die vor dem Auftreten des Fehlers beendet wurden, mit der angegebenen Aktualisierungsanzahl beendet.

SQLClientInfoException: Wird ausgelöst, wenn eine oder mehrere Clientinformationseigenschaften für eine Verbindung nicht festgelegt werden können. Zusätzlich zu den bereitgestellten Informationen wird auch eine Liste nicht festgelegter Clientinformationseigenschaften bereitgestellt.

bald...

Zusammenfassen

Dies ist der gesamte Inhalt dieses Artikels zur SQLException-Analyse bei der JDBC-Erkundung. Ich hoffe, er wird Ihnen hilfreich sein. Interessierte Freunde können weiterhin auf diese Site verweisen: Zusammenfassung gängiger JDBC-Schnittstellen, Codebeispiele für die Verwendung von JDBC zur Implementierung der Data Access Object Layer (DAO) usw. Wenn Sie Fragen haben, können Sie jederzeit eine Nachricht hinterlassen. Der Herausgeber wird Ihnen rechtzeitig antworten. Jeder ist herzlich eingeladen, eine Nachricht zur Diskussion zu hinterlassen.

Das könnte Sie auch interessieren:
  • Lösung für System.OutOfMemoryException in SQL Server
  • System.Data.SqlClient.SqlException: Die durch die Anmeldung angeforderte Datenbank kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen.
  • java.sql.SQLException: Interner Fehler: Aus der angegebenen Eingabe kann kein Datum erstellt werden.

<<:  Verwenden Sie reines JS, um den sekundären Menüeffekt zu erzielen

>>:  VMware12.0-Installation Ubuntu14.04 LTS-Tutorial

Artikel    

Artikel empfehlen

JS erhält Fünf-Sterne-Lob

In diesem Artikel wird der spezifische Code von J...

Beispiel für die Verwendung von rem zum Ersetzen von px in einem Vue-Projekt

Inhaltsverzeichnis Werkzeug Installieren Sie das ...

Vue macht Div-Höhe verschiebbar

In diesem Artikel wird der spezifische Code von V...

Vue + echart realisiert Doppelsäulendiagramm

In diesem Artikel wird der spezifische Code von v...

So beheben Sie das Eingabe-Jitter-Problem beim WeChat-Applet

Finden Sie das Problem Schauen wir uns zunächst d...

Sorgen Sie für eine schnelle Website

Ist Leistung wirklich wichtig? Leistung ist wicht...

Eine kurze Diskussion zum Thema Ziehen und Sortieren von Elementen in Tabellen

In letzter Zeit stoße ich bei der Verwendung von ...

Importieren Sie die CSV-Datei mit Navicat in MySQL

In diesem Artikel wird der spezifische Code zum I...

So verbergen und fälschen Sie die Versionsnummer in Nginx

1. Verwenden Sie den Curl-Befehl für den Standard...

So installieren Sie Linux Flash

So installieren Sie Flash unter Linux 1. Besuchen...

Vue-Vorlagenkonfiguration und Webstorm-Codeformatspezifikationseinstellungen

Inhaltsverzeichnis 1. Einstellungen für die Spezi...