Condividi tramite


Gestione degli errori

Scaricare il driver JDBC

Quando si utilizza il driver Microsoft JDBC per SQL Server, tutte le condizioni di errore del database vengono restituite all'applicazione Java come eccezioni utilizzando la classe SQLServerException. I metodi seguenti della classe SQLServerException sono ereditati da java.sql.SQLException e java.lang.Throwable. Possono essere usati per restituire informazioni specifiche sull'errore di SQL Server che si è verificato:

  • getSQLState() restituisce il codice di stato standard X/Open o SQL99 dell'eccezione.

  • getErrorCode() restituisce il numero di errore del database specifico.

  • getMessage() restituisce il testo completo dell'eccezione. Nel testo del messaggio di errore viene descritto il problema e spesso sono inclusi i segnaposto per le informazioni, ad esempio i nomi degli oggetti, che sono inseriti nel messaggio di errore quando viene visualizzato.

  • getSQLServerError() restituisce l'oggetto SQLServerError contenente informazioni dettagliate sull'eccezione ricevute da SQL Server. Questo metodo restituisce null se non si è verificato nessun errore del server.

Per ottenere ulteriori dettagli sull'errore generato dal server, è possibile usare i metodi seguenti della classe SQLServerError.

  • SQLServerError.getErrorMessage() restituisce il messaggio di errore ricevuto dal server.

  • SQLServerError.getErrorNumber() restituisce un numero che identifica il tipo di errore.

  • SQLServerError.getErrorState() restituisce un codice di errore numerico di SQL Server che rappresenta un messaggio di errore, un avviso o "Impossibile trovare dati".

  • SQLServerError.getErrorSeverity() restituisce il livello di gravità dell'errore.

  • SQLServerError.getServerName() restituisce il nome del computer in cui è in esecuzione un'istanza di SQL Server che ha generato l'errore.

  • SQLServerError.getProcedureName() Restituisce il nome della stored procedure o della chiamata di procedura remota (RPC) che ha generato l'errore.

  • SQLServerError.getLineNumber() restituisce il numero di riga nel batch dei comandi Transact-SQL o nella stored procedure che ha generato l'errore.

Nel prossimo esempio viene passata alla funzione una connessione aperta al database di esempio SQL Server AdventureWorks2022 e viene costruita un'istruzione SQL in formato non corretto che non contiene la clausola FROM. L'istruzione viene quindi eseguita con conseguente elaborazione di un'eccezione SQL.

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

Vedi anche

Diagnosi dei problemi relativi al driver JDBC