Обработка ошибок

Скачать драйвер JDBC

При использовании Microsoft JDBC Driver для SQL Server все состояния ошибок в базе данных возвращаются приложениям Java в виде исключений при помощи класса SQLServerException. Приведенные далее методы класса SQLServerException унаследованы от классов java.sql.SQLException и java.lang.Throwable. Их можно использовать для возвращения конкретной информации о возникшей ошибке SQL Server.

  • getSQLState() возвращает стандартный код состояния исключения X/Open или SQL99.

  • getErrorCode() возвращает специфический номер ошибки базы данных.

  • getMessage() возвращает полный текст исключения. В тексте сообщения об ошибке описывается проблема и зачастую содержатся заполнители для информации, такие как имена объектов, которые вставляются в сообщение об ошибке во время отображения.

  • getSQLServerError() возвращает объект SQLServerError с подробными сведениями об исключении, полученными от SQL Server. Если ошибок не было, этот метод возвращает значение NULL.

Следующие методы класса SQLServerError можно применить для получения дополнительных сведений об ошибке, созданной на сервере.

  • SQLServerError.getErrorMessage() возвращает сообщение об ошибке, которое вернул сервер.

  • SQLServerError.getErrorNumber() возвращает номер, который обозначает тип ошибки.

  • SQLServerError.getErrorState() возвращает числовой код ошибки, полученный из SQL Server, который обозначает ошибку, предупреждение или сообщение "данные не найдены".

  • SQLServerError.getErrorSeverity() возвращает уровень серьезности полученной ошибки.

  • SQLServerError.getServerName() возвращает имя компьютера, на котором работает создавший ошибку экземпляр SQL Server.

  • SQLServerError.getProcedureName() возвращает имя хранимой процедуры или удаленного вызова процедуры, в которой произошла ошибка.

  • SQLServerError.getLineNumber() возвращает номер строки в пакете команд Transact-SQL или хранимой процедуре, в которой произошла ошибка.

В следующем примере открытое соединение с SQL Server образцом базы данных AdventureWorks2022 передается в функцию и создается неправильно сформированная инструкция SQL без предложения FROM. Далее инструкция выполняется и происходит обработка исключения 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);
    }
}

См. также раздел

Диагностика проблем с JDBC Driver