Erro em Função Consulta Banco de Dados MySql

2 respostas
R

Boa Tarde Pessoal… to desenvolvendo um cadastro de alunos em JAVA utilizando 3 Camadas.
criei uma função para verificar no banco de dados se ja existe um cpf cadastrado no momento em q o jtextfield perde o foco, mas o sistema sempre retorna que nao existe o cpf digitado, mesmo ele ja estando cadastrado no banco de dados… abaixo estao os códigos das 3 camadas… gostaria da ajuda de voces para solucionar o erro deste código… desde ja agradeço…

********  Código Executado Quando o jTextField Perde o Foco *******

private void txtCPFFocusLost(java.awt.event.FocusEvent evt) {

if (txtCPF.getText().equals(""))

{

JOptionPane.showMessageDialog(null, É Obrigatório Digitar o CPF!);

txtCPF.requestFocus();

}

else

{

try

{

atual = controle.existeUsuario(txtCPF.getText());

txtNomeCompleto.setText(atual.getNomecompleto());

txtSenha.setText(atual.getSenha());

txtTelefone.setText(atual.getTelefone());

txtUsuario.setText(atual.getMatricula());

}

catch (Exception ex)

{

JOptionPane.showMessageDialog(this, ex.getMessage());

}

catch (Throwable ex)

{

JOptionPane.showMessageDialog(this, ex.getMessage());

}

}
*********** Código da Camada Lógica ********

public Usuario existeUsuario(String cpf) throws Exception, Throwable

{

if (Usuario.validacpf(cpf))

return Usuario.consultar(cpf);

else

throw new Exception(Este CPF Não é Válido!);

}
****** Código da Camada Persistente ******

//Metodo de classe usado para criar um outro objeto para receber os dados da consulta.

public static Usuario consultar(String parametros)throws Exception, Throwable

{

Usuario v = new Usuario ();

return v.consulta(cpf);

}
/*Metodo que faz a seleção do Aluno no BD, se não houver o aluno consultado 
 retorna uma mensagem de erro*/

public Usuario consulta(String cpf)throws Exception, Throwable
{
    conexao = new Conexao();
    /*Declara o caminho a ser usado para salvar o dados do novo veículo */
    Statement declaracao = conexao.getConexao().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    String comandoSql;
    Usuario retorno;
    //Faz um Select no Banco de Dados Passando o CPF como Parametro.
    comandoSql= "select * from usuario WHERE cpf='"+ cpf +"'";
    //executa o comando e insere na tabela usuario no mysql
    ResultSet resultado = declaracao.executeQuery(comandoSql);
    resultado.last();
    //verifica se o resultado retornado não tiver nenhum dado, envia mensagem de erro.
    if (resultado.getRow()!=0)
        throw new Exception ("Não Existe o Aluno Pesquisado!");
    //se conter algum dados a variaves "retorno" recebe os dados.
    else
    {    
        retorno = new Usuario (resultado.getString("cpf"),
                resultado.getString("nomecompleto"),
                resultado.getString("telefone"),
                resultado.getString("nomeusuario"),
                resultado.getString("senha"),
                resultado.getString("matricula"),
                resultado.getInt("disciplina"),
                resultado.getInt("turma"),
                resultado.getInt("tipo"));
    }
    conexao.finalize();
    // envia para o objeto consulta os dados selecionados.
    return retorno;
}

2 Respostas

F

Olá Rodrigo;
Bom dia!

Verifique a string do comando sql:

comandoSql= "select * from usuario WHERE cpf='"+ cpf +"'";

Tem aspas sobrando no final da instrução.

Outra coisa, evite concatenar strings em comandoSQL. Use o setString, algo parecido com isto:

PreparedStatement ps=null;
ResultSet rs=null;
conn=DriverManager.getConnection(url,user,password);
comandoSql= "select * from usuario WHERE cpf=?";
ps=conn.prepareStatement(comandoSql);

ps.setString(1, cpf);//aqui você seta o CPF para a query, sem a necessidade de concatenar

rs=ps.executeQuery();

while (rs.next()) {
...
}
....

Qualquer coisa posta novamente!

Abraço

Marco A.

F

Ops…

Depois que coloquei adequadamente seu código nas tags CODE é que percebi que as aspas no final da instrução estão corretas.

Fica valendo a dica do setString;

:lol:

Marco A.

Criado 18 de janeiro de 2009
Ultima resposta 19 de jan. de 2009
Respostas 2
Participantes 2