Behandeln von Fehlern
Bei der Verwendung des Microsoft JDBC-Treibers für SQL Server werden alle Datenbankfehlerbedingungen als Ausnahmen unter Verwendung der Klasse SQLServerException an Ihre Java-Anwendung zurückgegeben. Die folgenden Methoden der SQLServerException-Klasse werden von „java.sql.SQLException“ und „java.lang.Throwable“ geerbt. Mit ihnen können spezielle Informationen zum aufgetretenen SQL Server-Fehler zurückgegeben werden:
getSQLState()
gibt den normalen X/Open- oder SQL99-Statuscode der Ausnahme zurück.getErrorCode()
gibt die jeweilige Datenbankfehlernummer zurück.getMessage()
gibt den vollständigen Text der Ausnahme zurück. Der Text der Fehlermeldung beschreibt das Problem und enthält häufig Platzhalter für Informationen wie Objektnamen, die in die angezeigte Fehlermeldung eingefügt werden.getSQLServerError()
gibt dasSQLServerError
-Objekt zurück, das ausführliche von SQL Server empfangene Informationen zur Ausnahme enthält. Diese Methode gibt NULL zurück, wenn kein Serverfehler aufgetreten ist.
Die folgenden Methoden der SQLServerError
-Klasse können zum Abrufen zusätzlicher Informationen über den Fehler verwendet werden, der vom Server generiert wurde.
SQLServerError.getErrorMessage()
gibt die vom Server empfangene Fehlermeldung zurück.SQLServerError.getErrorNumber()
gibt eine Zahl zurück, die zur Identifikation des Fehlertyps dient.SQLServerError.getErrorState()
gibt einen numerischen Fehlercode von SQL Server zurück, der einen Fehler, eine Warnung oder die Meldung „no data found“ (Keine Daten gefunden) darstellt.SQLServerError.getErrorSeverity()
gibt den Schweregrad des Fehlers zurück.SQLServerError.getServerName()
gibt den Namen des Computers zurück, auf dem die SQL Server-Instanz ausgeführt wird, die den Fehler generiert hat.SQLServerError.getProcedureName()
gibt den Namen der gespeicherten Prozedur oder des Remoteprozeduraufrufs zurück, der den Fehler generiert hat.SQLServerError.getLineNumber()
gibt die Zeilennummer im Transact-SQL-Befehlsbatch oder in der gespeicherten Prozedur zurück, die den Fehler generiert hat.
Im nächsten Beispiel wird eine offene Verbindung mit der SQL-AdventureWorks2022-Beispieldatenbank an die Funktion übergeben und eine fehlerhafte SQL-Anweisung erstellt, die keine FROM-Klausel enthält. Anschließend werden die Anweisung ausgeführt und eine SQL-Ausnahme verarbeitet.
public static void executeSQLException(Connection con) {
try (Statement stmt = con.createStatement();) {
String SQL = "SELECT TOP 10 * Person.Contact";
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString("FirstName") + " " + rs.getString("LastName"));
}
}
catch (SQLException se) {
do {
System.out.println("SQL STATE: " + se.getSQLState());
System.out.println("ERROR CODE: " + se.getErrorCode());
System.out.println("MESSAGE: " + se.getMessage());
System.out.println();
}
while (se != null);
}
}
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für