Share via


Gestion des erreurs

Télécharger le pilote JDBC

Lors de l'utilisation du pilote JDBC Microsoft, toutes les erreurs de base de données sont retournées à votre application Java en tant qu'exceptions à l'aide de la classe SQLServerException. Les méthodes suivantes de la classe SQLServerException sont héritées de java.sql.SQLException et de java.lang.Throwable et elles peuvent être utilisées pour retourner des informations spécifiques sur l’erreur SQL Server qui s’est produite :

  • getSQLState() retourne l'état de code standard X/Open ou SQL99 de l'exception.

  • getErrorCode() retourne le numéro d'erreur de base de données spécifique.

  • getMessage() retourne le texte intégral de l'exception. Le texte du message d'erreur décrit le problème et inclut souvent des espaces réservés pour des informations, tels que des noms d'objets insérés dans le message d'erreur lors de son affichage.

  • getSQLServerError() retourne l’objet SQLServerError contenant des informations détaillées sur l’exception envoyée par SQL Server. Cette méthode retourne la valeur Null si aucune erreur de serveur ne s’est produite.

Les méthodes suivantes de la classe SQLServerError permettent d’obtenir des détails supplémentaires sur l’erreur générée à partir du serveur.

  • SQLServerError.getErrorMessage() retourne le message d’erreur envoyé par le serveur.

  • SQLServerError.getErrorNumber() retourne un nombre identifiant le type de l’erreur.

  • SQLServerError.getErrorState() retourne un code d’erreur numérique de SQL Server qui représente une erreur, un avertissement ou un message « Aucune donnée trouvée ».

  • SQLServerError.getErrorSeverity() retourne le niveau de gravité de l’erreur reçue.

  • SQLServerError.getServerName() retourne le nom de l’ordinateur exécutant une instance de SQL Server qui a généré l’erreur.

  • SQLServerError.getProcedureName() retourne le nom de la procédure stockée ou de l’appel de procédure distante (RPC) qui a généré l’erreur.

  • SQLServerError.getLineNumber() retourne le numéro de la ligne au sein du lot de commandes Transact-SQL ou de la procédure stockée qui a généré l’erreur.

Dans l’exemple suivant, une connexion ouverte à l’exemple de base de données SQL Server AdventureWorks2022 est passée à la fonction, et une instruction SQL incorrecte est créée sans clause FROM. Ensuite, l'instruction est exécutée et une exception SQL est traitée.

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);
    }
}

Voir aussi

Diagnostic de problèmes avec le pilote JDBC