Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
JDBC-stuurprogramma downloaden
Wanneer u het Microsoft JDBC-stuurprogramma voor SQL Server gebruikt, worden alle databasefoutvoorwaarden geretourneerd naar uw Java-toepassing als uitzonderingen met behulp van de klasse SQLServerException . De volgende methoden van de klasse SQLServerException worden overgenomen van java.sql.SQLException en java.lang.Throwable; en ze kunnen worden gebruikt om specifieke informatie te retourneren over de SQL Server-fout die is opgetreden:
getSQLState()retourneert de standaard-X/Open- of SQL99-statuscode van de uitzondering.getErrorCode()retourneert het specifieke databasefoutnummer.getMessage()retourneert de volledige tekst van de uitzondering. De tekst van het foutbericht beschrijft het probleem en bevat vaak tijdelijke aanduidingen voor informatie, zoals objectnamen, die worden ingevoegd in het foutbericht wanneer deze wordt weergegeven.getSQLServerError()retourneert hetSQLServerErrorobject met gedetailleerde informatie over de uitzondering die is ontvangen van SQL Server. Deze methode retourneert null als er geen serverfout is opgetreden.
De volgende methoden van de SQLServerError klasse kunnen worden gebruikt om meer informatie te verkrijgen over de fout die is gegenereerd op basis van de server.
SQLServerError.getErrorMessage()retourneert het foutbericht zoals ontvangen van de server.SQLServerError.getErrorNumber()retourneert een getal dat het type fout aangeeft.SQLServerError.getErrorState()retourneert een numerieke foutcode van SQL Server die een foutbericht, waarschuwing of bericht 'geen gegevens gevonden' aangeeft.SQLServerError.getErrorSeverity()retourneert het ernstniveau van de ontvangen fout.SQLServerError.getServerName()retourneert de naam van de computer waarop een exemplaar van SQL Server wordt uitgevoerd dat de fout heeft gegenereerd.SQLServerError.getProcedureName()retourneert de naam van de opgeslagen procedure of remote procedure call (RPC) die de fout heeft gegenereerd.SQLServerError.getLineNumber()retourneert het regelnummer binnen de Transact-SQL opdrachtbatch of opgeslagen procedure die de fout heeft gegenereerd.
In het volgende voorbeeld wordt een open verbinding met de SQL Server AdventureWorks2025-voorbeelddatabase doorgegeven aan de functie en wordt er een onjuiste SQL-instructie gemaakt die geen FROM-component heeft. Vervolgens wordt de instructie uitgevoerd en wordt een SQL-uitzondering verwerkt.
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);
}
}
ServerMessageHandler gebruiken
Vanaf release 12.8.0 biedt het stuurprogramma een extra ServerMessageHandler die meer controle mogelijk maakt over foutfeedback en logboekregistratie. Als u de ServerMessageHandlerinterface wilt gebruiken, moet u de ISQLServerMessageHandler interface implementeren. De kenmerken van ServerMessageHandler zijn onder andere:
Berichtfeedback
Hiermee kunt u feedback ontvangen van langlopende query's (zoals voortgangsberichten). Bijvoorbeeld, RAISERROR ('Progress message...', 0, 1) WITH NOWAIT.
Registratie van algemene fouten
Hiermee kan uw berichtenhandler het loggen van alle fouten afhandelen.
Universele foutafhandeling
Hiermee kunt u logica voor foutafhandeling direct bij de ServerMessageHandler plaatsen, zonder dat u dezelfde foutafhandeling telkens hoeft te herhalen in uw toepassing.
Ernst van foutmeldingen herindelen
Hiermee kunt u de ernst van specifieke foutberichten herkennen en wijzigen:
SQLServerError.toSQLServerInfoMessage()retourneert eenISQLServerMessage, gemaakt door een foutbericht te downgraden naar een infobericht.SQLServerError.toSQLServerInfoMessage(int newErrorSeverity)retourneert eenISQLServerMessage, gemaakt door een foutbericht te downgraden naar een infobericht, met een nieuwe fouternst.SQLServerError.toSQLServerInfoMessage(int newErrorSeverity, int newErrorNumber)retourneert eenISQLServerMessage, gemaakt door een foutbericht te downgraden naar een informatiebericht, met een nieuwe fouternst en een nieuw foutnummer.SQLServerInfoMessage.toSQLServerError()retourneert eenISQLServerMessage, gemaakt door een informatiebericht te upgraden naar een foutbericht.SQLServerInfoMessage.toSQLServerError(int newErrorSeverity)retourneert eenISQLServerMessage, gemaakt door een informatiebericht te upgraden naar een foutbericht, met een nieuwe fout ernst.SQLServerInfoMessage.toSQLServerError(int newErrorSeverity, int newErrorNumber)retourneert eenISQLServerMessage, gemaakt door een informatiebericht te upgraden naar een foutbericht, met een nieuwe fout ernst en foutnummer.
SQLExceptionChaining
Ook met release 12.8.0 kunnen SQLExceptions aan elkaar worden gekoppeld, zodat het uiteindelijke uitzonderingsbericht automatisch alle uitzonderingen bevat die anders verloren kunnen gaan. Deze functie is standaard ingeschakeld.