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

Tutorials der MySQL-Reihe für Anfänger

Inhaltsverzeichnis 1. Grundkonzepte und Grundbefe...

Parsen des Linux-Quellcodes epoll

Inhaltsverzeichnis 1. Einleitung 2. Einfaches Epo...

Details zur Überwachung von DOM-Elementen durch MutationObServer in JavaScript

1. Grundlegende Verwendung Es kann über den Mutat...

Zusammenfassung der CSS-Methoden zum Löschen von Floats

Float wird häufig im Layout von Webseiten verwend...

Detaillierte Schritte für einen reibungslosen Übergang von MySQL zu MariaDB

1. Einführung in MariaDB und MySQL 1. Einführung ...

React implementiert eine mehrkomponentige Wertübertragungsfunktion über Conetxt

Die Wirkung dieser Funktion ist ähnlich wie vue的p...

Detaillierte Erklärung der JavaScript-Ereignisse onblur und onfocus

Auf HTML-Seiten verfügen visuelle Elemente wie Sc...

Tutorial-Diagramm zur kostenlosen 64-Bit-Installationsversion von MySQL 5.7.31

1. Herunterladen Download-Adresse: https://dev.my...

Beispielcode zur Implementierung der Formularvalidierung mit reinem CSS

In unserem täglichen Geschäft ist die Formularval...

Lösung für das Problem, dass MySql immer das mySqlInstallerConsole-Fenster öffnet

MySql öffnet regelmäßig ein MySQLInstallerConsole...

Zusammenfassung und Analyse häufig verwendeter Docker-Befehle und Beispiele

Inhalt 1. Container-Lebenszyklusmanagement (1) Do...