Обработка ошибок
При использовании 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);
}
}
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по