Verificar se cadastro já existe no banco de dados

Bom dia senhores,

Venho por meio deste tópico com uma dúvida. Já tentei de todas as formas, só que nada dá certo.

Bom, este é meu código de cadastro.

Usuario Usuario = new Usuario();
Usuario.setNome(camponome.getText());
Usuario.setCpf(campocpf.getText());
Usuario.setEndereco(campoend.getText());
Usuario.setTel1(campotel1.getText());
Usuario.setTel2(campotel2.getText());
Usuario.setEmail(campoemail.getText());
Usuario.setPerfil((String) campoperf.getSelectedItem());
Usuario.setUsuario(campousu.getText());
Usuario.setSenha(camposenha.getText());

    if ((camponome.getText().isEmpty()) || (campoend.getText().isEmpty()) || (campocpf.getText().isEmpty()) || (campotel1.getText().isEmpty()) || (campoemail.getText().isEmpty())|| (campousu.getText().isEmpty())|| (camposenha.getText().isEmpty())|| (campoconfsenha.getText().isEmpty())) {
        JOptionPane.showMessageDialog(null, "Os campos não podem retornar vazios!", "Atenção", JOptionPane.WARNING_MESSAGE);
    } else {
        
        if (new String(camposenha.getPassword()).equals(new String(campoconfsenha.getPassword()))) {
            UsuarioDAO DAO = new UsuarioDAO();
            DAO.cadastrarusuario(Usuario);
            JOptionPane.showMessageDialog(null, "Usuário " + camponome.getText() + " cadastrado com sucesso!");
            camponome.setText(null);
            campocpf.setText(null);
            campoend.setText(null);
            campotel1.setText(null);
            campotel2.setText(null);
            campoemail.setText(null);
            campousu.setText(null);
            camposenha.setText(null);
            campoconfsenha.setText(null);

        } else {
            JOptionPane.showMessageDialog(null, "Senhas não conferem!", "Atenção", JOptionPane.WARNING_MESSAGE);
        }
    }

O que eu desejo pode ser muito simples para vocês, porém não estou conseguindo de nenhuma forma, já pesquisei bastante, to a mais de 2 dias pesquisando e resolvi pedir recursos a vocês, não precisa me dar de mãos beijadas, só me dando uma luz eu já agradeço.

Bom, vamos lá, o que eu quero é muito simples, eu quero que o sistema busque no banco de dados se já há o cpf que estão cadastrando no momento.

Pega o CPF digitado pelo usuário, faz uma consulta na sua tabela de cadastro pelo número do CPF, se a consulta retornar 1 registro, significa que já existe um cadastro com o CPF em questão, caso contrário, segue o fluxo normal do cadastro.

poderia dar um exemplo?

Monte um select de consulta mais ou menos igual o exemplo abaixo.

SELECT COUNT(*) AS REGISTRO FROM TABELA_CADASTRO WHERE CPF LIKE '00000000000'

Depois que executar recupere o retorno do resultset e veja se o retorno foi 0 ou 1, se for 0 é porque não existe registro cadastrado, se retornar 1 é porque existe o registro cadastrado.

2 curtidas

nada feito mano, poderia me dar um exemplo mais específico? desculpe o incomodo

Mais específico que isso só se eu te der o exemplo pronto, o que não farei, por gentileza seja mais pontual com o que você tem dúvida, qual ponto não está claro pra você, poste o seu código mostrando como você tentou fazer, que desta forma eu consigo te ajudar de uma maneira mais assertiva.

    código completo ficou assim:


    Usuario Usuario = new Usuario();
    Usuario.setNome(camponome.getText());
    Usuario.setCpf(campocpf.getText());
    Usuario.setEndereco(campoend.getText());
    Usuario.setTel1(campotel1.getText());
    Usuario.setTel2(campotel2.getText());
    Usuario.setEmail(campoemail.getText());
    Usuario.setPerfil((String) campoperf.getSelectedItem());
    Usuario.setUsuario(campousu.getText());
    Usuario.setSenha(camposenha.getText());

    if ((camponome.getText().isEmpty()) || (campoend.getText().isEmpty()) || (campocpf.getText().isEmpty()) || (campotel1.getText().isEmpty()) || (campoemail.getText().isEmpty())|| (campousu.getText().isEmpty())|| (camposenha.getText().isEmpty())|| (campoconfsenha.getText().isEmpty())) {
        JOptionPane.showMessageDialog(null, "Os campos não podem retornar vazios!", "Atenção", JOptionPane.WARNING_MESSAGE);
    } else {
        try {
            String sql = "Select * FROM usuarios where cpf like '0000000'";
            if(rs.next()){
                String cpf = rs.getString(campocpf.getText());
                if(cpf.equals(1)){
                    JOptionPane.showMessageDialog(null,"CPF já está cadastrado.");
                }else{
                     if (new String(camposenha.getPassword()).equals(new String(campoconfsenha.getPassword()))) {
            UsuarioDAO DAO = new UsuarioDAO();
            DAO.cadastrarusuario(Usuario);
            JOptionPane.showMessageDialog(null, "Usuário " + camponome.getText() + " cadastrado com sucesso!");
            camponome.setText(null);
            campocpf.setText(null);
            campoend.setText(null);
            campotel1.setText(null);
            campotel2.setText(null);
            campoemail.setText(null);
            campousu.setText(null);
            camposenha.setText(null);
            campoconfsenha.setText(null);

        } else {
            JOptionPane.showMessageDialog(null, "Senhas não conferem!", "Atenção", JOptionPane.WARNING_MESSAGE);
        }
                }
            }
            
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
       
    }

OBS: sou novato no ramo.

Foi o que eu pedi acima " não precisa me dar de mãos beijadas". Eu só quero uma luz.

Veja bem, tu cria a String com o SQL da consulta com o valor de comparação fixo, o valor de comparação tem que ser o texto digitado no seu campo de CPF, depois você tenta comparar o resultset, mas em nenhum momento você faz a execução da consulta, logo seu resultset estará nulo.

Obs: Utilize sempre rs.first() para consultas que devem retornar registros únicos, como é o seu caso, utilize somente rs.next() para manipular uma lista de resultados!

de que forma poderia me ajudar?

Ajudar de que forma você se refere?

A ajuda que te dei foi dizer exatamente o que você tem de fazer para seu código funcionar, se tudo o que eu te disse não está fazendo nenhum sentido pra ti, então você está pondo a carroça na frente dos bois, se for esse o caso, te recomendo parar de trabalhar com interface gráfica, e estudar primeiro todos os conceitos básicos da programação em java, para depois sim começar a trabalhar com interface gráfica.

:disappointed_relieved: nossa

tudo bem. Ninguém nasce sabendo, só pedi uma ajuda

Sim amigo, e foi justamente o que fiz, te orientei sobre o que você tem que fazer, agora se mesmo assim você continua perdido concorda comigo que te falta alguns conceitos ?

Ou se caso algo que eu tenha dito não ficou muito compreensivo pra ti, me diga, que desta forma eu tento reformular de uma maneira mais simples.

A intenção é ajudar, mas pra isso você tem que se ajudar também.

Bom, tá certo. Tentei de uma outra forma.

    Usuario Usuario = new Usuario();
    Usuario.setNome(camponome.getText());
    Usuario.setCpf(campocpf.getText());
    Usuario.setEndereco(campoend.getText());
    Usuario.setTel1(campotel1.getText());
    Usuario.setTel2(campotel2.getText());
    Usuario.setEmail(campoemail.getText());
    Usuario.setPerfil((String) campoperf.getSelectedItem());
    Usuario.setUsuario(campousu.getText());
    Usuario.setSenha(camposenha.getText());

    if ((camponome.getText().isEmpty()) || (campoend.getText().isEmpty()) || (campocpf.getText().isEmpty()) || (campotel1.getText().isEmpty()) || (campoemail.getText().isEmpty())|| (campousu.getText().isEmpty())|| (camposenha.getText().isEmpty())|| (campoconfsenha.getText().isEmpty())) {
        JOptionPane.showMessageDialog(null, "Os campos não podem retornar vazios!", "Atenção", JOptionPane.WARNING_MESSAGE);
    } else {
        try {
            String sql = "Select * FROM usuarios where cpf like '0000000000'";
            if(rs.first()){
                String cpf = rs.getString(2);
                if(cpf.equals(campocpf.getText())){
                    JOptionPane.showMessageDialog(null,"CPF já está cadastrado.");
                }else{
                     if (new String(camposenha.getPassword()).equals(new String(campoconfsenha.getPassword()))) {
            UsuarioDAO DAO = new UsuarioDAO();
            DAO.cadastrarusuario(Usuario);
            JOptionPane.showMessageDialog(null, "Usuário " + camponome.getText() + " cadastrado com sucesso!");
            camponome.setText(null);
            campocpf.setText(null);
            campoend.setText(null);
            campotel1.setText(null);
            campotel2.setText(null);
            campoemail.setText(null);
            campousu.setText(null);
            camposenha.setText(null);
            campoconfsenha.setText(null);

        } else {
            JOptionPane.showMessageDialog(null, "Senhas não conferem!", "Atenção", JOptionPane.WARNING_MESSAGE);
        }
                }
            }
            
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
       
    }

Só que eu não sei se cometi um erro de iniciante, mas tá dando java,langnullpointerexception, eu gostaria que me esclarecesse onde está o erro no código.

Você só inverteu a ordem do código, mas continua como antes, sua string SQL está com o campo de comparação fixo com ‘0000000000’ ao invés do número digitado no seu campo CPF.
Você também não faz a execução do SQL para obter o retorno, você só criou a String.

entao no lugar do 0000 seria +campocpf.getText();?

Aqui tem um tutorial bem bacana que ensina como fazer a manipulação dos dados.

Exatamente, pois o que queremos é comparar o valor digitado no campo CPF não é ?

muito obrigado, era desse tipo de luz q eu tava falando kkkk, mas ai resolveria o java.lang.blablabla?