Pessoal, estou desenvolvendo um sistema com Java e PostreSQL e gostaria de fazer o seguinte: quando o usuário digitar um código inválido, ou tentar excluir um registro que é foreign key em outra tabela, é exibida uma mensagem de erro dizendo: “Esse código já existe” ou “Não é possível excluir tal registro por tais e tais motivos”.
A pergunta é: quando o banco dispara uma mensagem de erro, não dá pra usar outra coisa ao invés de avaliar cada SQLException.getMessage()?
Eu também gostaria de saber por que o getErrorCode sempre retorna o mesmo valor (7), não importanto que erro seja.
Grato pela atenção.
deixe eu ver se eu entendi sua duvida…
vc quer que quando uma excessao ocorre, imprima msgs que o usuario entenda, é isso?
Se for isso, vc pode estar fazendo.
ex:
try{...}
catch(SQLException sqlex) {
System.out.println("Erro...");
}
o que vc pode estar fazendo tb é criando sua propria exception tb…
Espero ter ajudado.
Abraços
É isso aí. Quero que o usuário entenda quando ocorre alguma exceção.
Só que eu quero saber QUAL é a exceção disparada pelo banco.
Se é violação de chave primária, ou chave estrangeira, ou unique key’s, ou qualquer coisa que o banco não permita que ocorra.
Eu posso mostrar ao usuário: System.err.println(SQLException.getMessage());
Mas o problema é que para ele apareceria o seguinte (por exemplo):
duplicate key violates unique constraint "pkbairro"
Isso é uma porcaria. Eu queria fazer algo do tipo (é claro que de maneira decente, isso aqui é só pra entender):
switch(SQLException.getErrorCode()){
case 1: msg = "Esse registro não pôde ser excluído por motivos, X, Y, Z"; break
case 2: msg = "Código já existente"; break
case 3: msg = "Valor X, Y,Z incorreto"; break
}
print(msg);
Não estou muito feliz com a idéia de ter que ficar analisando toda a String que vem de getMessage() para exibir uma mensagem de erro decente. Mas pelo visto não tem outro jeito.
é velinho, sinto lhe informar, mas eu tb naum conheço nenhuma outra maneira, a naum ser analisando cada msg…
vou ficar devendo…
o que vc pode estar fazendo é colocando msgs mais genéricas. Tipo do seu exemplo:
Abraços,