Control de errores

Descargar controlador JDBC

Cuando se usa el controlador JDBC de Microsoft para SQL Server, todas las condiciones de error de la base de datos se devuelven a la aplicación Java como excepciones que usan la clase SQLServerException. Los siguientes métodos de la clase SQLServerException se heredan de java.sql.SQLException y java.lang.Throwable y se pueden emplear para devolver información específica sobre el error de SQL Server que se ha producido:

  • getSQLState() devuelve el código de estado X/Open o SQL99 de la excepción.

  • getErrorCode() devuelve el número específico del error de la base de datos.

  • getMessage() devuelve el texto completo de la excepción. El texto del mensaje de error describe el problema y, con frecuencia, incluye marcadores de posición de información tales como los nombres de los objetos, que se incluyen en el mensaje de error cuando se muestra.

  • getSQLServerError() devuelve el objeto SQLServerError que contiene información detallada sobre la excepción tal como se recibe de SQL Server. Este método devuelve NULL si no se ha producido ningún error de servidor.

Los siguientes métodos de la clase SQLServerError se pueden usar para obtener detalles adicionales sobre el error generado por el servidor.

  • SQLServerError.getErrorMessage() devuelve el mensaje de error tal como se recibe del servidor.

  • SQLServerError.getErrorNumber() devuelve un número que identifica el tipo del error.

  • SQLServerError.getErrorState() devuelve un código de error numérico del servidor SQL Server que representa un error, advertencia o mensaje "no se encuentran datos".

  • SQLServerError.getErrorSeverity() devuelve el nivel de gravedad del error recibido.

  • SQLServerError.getServerName() devuelve el nombre del equipo que ejecuta una instancia de SQL Server que generó el error.

  • SQLServerError.getProcedureName() devuelve el nombre del procedimiento almacenado o la llamada a procedimiento remoto (RPC) que generó el error.

  • SQLServerError.getLineNumber() obtiene el número de línea del procedimiento almacenado o lote de comandos de Transact-SQL que generó el error.

En el siguiente ejemplo, se pasa a la función una conexión abierta a la base de datos de ejemplo AdventureWorks2022 de SQL Server y se construye una instrucción SQL incorrecta que no incluye una cláusula FROM. A continuación, se ejecuta la instrucción de SQL y se procesa una excepción de 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);
    }
}

Consulte también

Diagnóstico de problemas del controlador JDBC