Tratando erros
Ao usar o Microsoft JDBC Driver para SQL Server, todas as condições de erro de banco de dados são retornadas para seu aplicativo Java como exceções usando a classe SQLServerException. Os seguintes métodos da classe SQLServerException são herdados de java.sql.SQLException e java.lang.Throwable; e eles podem ser usados para retornar informações específicas sobre o erro do SQL Server que ocorreu:
O
getSQLState()
retorna o X/Open padrão ou código de estado SQL99 da exceção.O
getErrorCode()
retorna o número de erro de banco de dados específico.O
getMessage()
retorna o texto completo da exceção. O texto de mensagem de erro descreve o problema e geralmente inclui espaços reservados para informações, como nomes de objeto, que são inseridos na mensagem de erro quando é exibido.O
getSQLServerError()
retorna o objetoSQLServerError
que contém informações detalhadas sobre a exceção, conforme recebido do SQL Server. Esse método retornará nulo se nenhum erro de servidor tiver ocorrido.
Os métodos a seguir da classe SQLServerError
podem ser usados para obter detalhes adicionais sobre o erro gerado no servidor.
O
SQLServerError.getErrorMessage()
retorna a mensagem de erro como recebida do servidor.O
SQLServerError.getErrorNumber()
retorna um número que identifica o tipo do erro.O
SQLServerError.getErrorState()
retorna um código de erro numérico do SQL Server que representa um erro, aviso ou mensagem "nenhum dado encontrado".O
SQLServerError.getErrorSeverity()
retorna o nível de gravidade do erro recebido.O
SQLServerError.getServerName()
retorna o nome do computador que está executando uma instância do SQL Server que gerou o erro.O
SQLServerError.getProcedureName()
retorna o nome do procedimento armazenado ou RPC (chamada de procedimento remoto) que gerou o erro.O
SQLServerError.getLineNumber()
retorna o número de linha no lote de comandos Transact-SQL ou no procedimento armazenado que gerou o erro.
No exemplo a seguir, uma conexão aberta com o banco de dados de exemplo AdventureWorks2022 do SQL Server é transmitida para a função e uma instrução SQL malformada que não tem uma cláusula FROM é construída. Em seguida, a instrução é executada e uma exceção SQL é processada.
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);
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de