Bom dia .
Estou criando uma consulta ao banco de dados mysql . É consultado um RA de um determinado aluno. Caso o RA esteja cadastrado , é retornado o nome dele . Caso não esteja , deveria aparecer uma mensagem de erro … mas não aparece .
Código da classe :
// Botão Buscar
Dados d = new Dados();
Conectar c = new Conectar();
ResultSet retorno = d.consulta("select ra,nome from paciente where ra = '" + txtRA.getText() + "'" );
try {
while(retorno.next()) {
txtNome.setText(retorno.getString("nome"));
}
}catch(SQLException e) {
JOptionPane.showMessageDialog(null,"Pesquisa não realizada. Verifique o RA ");
}
Código do método na classe Dados (equivalente a uma classe DAO):
Este código aqui nunca vai retornar erro caso não existe nenhum RA cadastrado.
Você precisa validar se há ou não algum RA e, se não houver, retornar a mensagem de erro.
Eu havia pensado nisso … tentei usar , por exemplo , o if, mas não deu certo ele não consegue fazer a validação usando um resultset …dá erro , ou eu não soube fazer …mas em todas as tentativas , deu erro .
Sim, pois não é o ResultSet que precisa ser validado (o while já faz isso).
Você pode (e, neste caso, deve?) usar uma variável para atribuir o resultado da consulta. Caso essa variável seja nula, lança a exceção.
String nome = null;
while(retorno.next()) {
nome = retorno.getString("nome");
}
if(null == nome) {
//Lança a exceção "Não existe RA associado ao aluno";
}
Muito obrigado darlan_machado e Jonathan_Medeiros.
Segui o que o Darlan falou e exemplificou e deu certo . Muito obrigado . Problema resolvido.
O código que o Jonathan pediu para eu testar , testei e obtive sucesso testando um RA inexistente ,porém , quando testo um RA Válido ,ele retorna os dados ,porém apresenta erro :
“Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException”
De qualquer modo agradeço aos dois , já que o o meu problema foi sanado.
Boa tarde .Bem observado ,obrigado, porém foi falha minha .Nesse caso precisarei do select apenas no campo ra . obrigado. Deus te abençoe. O problema foi resolvido com a sugestão do Darlan.