[AJUDA!] - Condição de cadastro, verifica se já existe! Mais não funciona

3 respostas
macdown

Olá, pessoal!

Estou com uma dificuldade em fazer uma verificação de cadastro.
Ele até verifica e mostra que existe, o problema é que quando nao existe ele nao faz nada!!!

private void btCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        String mostraIng = tfIngrediente.getText();
        String verificaIngrediente = "SELECT * FROM INGREDIENTE WHERE INGREDIENTE = '"+mostraIng+"'";
        try {
        AcessoFireBird firebird = new AcessoFireBird();
        pstm = firebird.conectar().prepareStatement(verificaIngrediente);
        rs = pstm.executeQuery();
        if (rs.next()) {
            if (rs.getString("ingrediente").equals(mostraIng)) {
                JOptionPane.showMessageDialog(null, "Este ingrediente já está cadastrado!");
            } else {             
                cadastrarIngrediente();
            }
           
        }

       } catch(Exception e) {
            e.printStackTrace();
       }
    }

Se não existe ele nao vai para o else e executa o cadastrar.
Se alguem poder dar uma mãozinha, vou agradecer! =)

Muito obrigado.

3 Respostas

blackfalcon

Isso acontece por causa do seu SELECT, se existir ele puxa o campo, se nao existir ele nao puxa nada e o resultSet fica vazio, por isso nao faz o que voce quer fazer. Nesse caso, use o select simples, sem where e use um while ao inves de if no rs.next().

Abraços

L

macdown, ele não chega até o else pq o if (rs.next()) retorna false, e está certo já que não existe no banco, certo?. Use o debug pra vc vê melhor…

Acho que vc queria fazer isso, né:

if (rs.next()) {   
           if (rs.getString("ingrediente").equals(mostraIng)) {   
               JOptionPane.showMessageDialog(null, "Este ingrediente já está cadastrado!");   
           }               
 } else {               
           cadastrarIngrediente();   
 }

Abraços.

macdown

Pessoal, obrigado pelas dicas.

blackfalcon: Eu tinha feito com o while e um select simples, só que ate o laço de repetição achar no banco de dados ele repetia o comando dado.
Por isso que não fiz assim. =)
Mais valew pela dica.

Lintz_net: Vou testar essa condição quando chegar em casa. Não tinha testado do jeito que colocou. Muito obrigado mesmo! =)

Abraço a todos. :smiley:

Criado 24 de maio de 2010
Ultima resposta 25 de mai. de 2010
Respostas 3
Participantes 3