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 empfehlen

So verwenden Sie Vue zum Entwickeln öffentlicher Account-Webseiten

Inhaltsverzeichnis Projekthintergrund Start Erste...

In einem Artikel erfahren Sie, wie Sie ein Vue-Plugin schreiben

Inhaltsverzeichnis Was ist ein Plugin Plugins sch...

Fallstudie zum Löschen und Neuinstallieren eines Mac-Knotens

Mac-Knoten löschen und neu installieren löschen K...

MySQL-Operationen: Operationen mit JSON-Datentyp

Im vorherigen Artikel haben wir das ausführliche ...

Installieren Sie Ubuntu 18 ohne USB-Laufwerk unter Windows 10 mit EasyUEFI

1. BIOS überprüfen Überprüfen Sie zunächst, in we...

Implementierungscode zur Verwendung der MongoDB-Datenbank in Docker

Holen Sie sich das Mongo-Image sudo docker pull m...

Beispielcode zur Implementierung des Regentropfen-Animationseffekts mit CSS

Glasfenster Was wir heute erreichen werden, ist d...

Grundlegendes Verständnis und Verwendung der HTML-Auswahloption

Detaillierte Erklärung von HTML (Option auswählen)...

Erfahrungsaustausch zur MySQL-Slave-Wartung

Vorwort: Die MySQL-Master-Slave-Architektur dürft...

Unsere Gedanken zur Karriere als UI-Ingenieur

Ich bin seit langer Zeit depressiv, warum? Vor ein...

Webdesign-Tipps für Formular-Eingabefelder

1. Gestricheltes Feld, wenn die Abbrechen-Schaltfl...