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.
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.
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.
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!
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.
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.
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.