Eu estava fazendo uma tela de cadastro, quando me deparei na parte em que tenho que cadastrar pessoas, porém não posso cadastrar pessoas com cpf igual.
então tentei atraves desse código e não obtive sucesso.
publicvoidselecionarTeste(){try{Stringurl="jdbc:odbc:Pizzaria";Stringusuario="";Stringsenha="";Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon;con=DriverManager.getConnection(url,usuario,senha);Statementst=con.createStatement();ResultSetr=st.executeQuery("SELECT cd_Cpf FROM Cliente");while(r.next()){Stringid=r.getString("cd_Cpf");Stringcpf="[telefone removido]";if(id.equals(cpf)){System.out.println("funciona");}else{System.out.println(" nao funciona");}}st.close();con.close();}catch(Exceptione){JOptionPane.showMessageDialog(null,"Erro: "+e.getMessage());}}
Não sei se o problema é na minha lógica ou se existe um comando mais fácil para isso.
Essa restrição não vem do Banco de Dados? Pode ser um índice Unique ou ainda Chave Primária…
thundercas
Edipokbelo,
Existe sim uma maneira mais fácil:
ResultSetr=st.executeQuery("SELECT cd_Cpf FROM Cliente WHERE cd_Cpf = '[telefone removido]'");if(r.next()){System.out.println("CPF já Existe");}else{System.out.println("CPF Válido");}
Espero ter ajudado
abs
L
lopima
edipokbelo, você está checando de está obtendo todos os valores de corretamente com
“String id = r.getString(“cd_Cpf”);”
Acho que as duassoluções propostas estão corretas, mas acho que a melhor maneira de fazer isso é usando uma “primary key” no banco de dados. Já que você quer evitar duplicidade no seu banco de dados.
danilopelegrino
thundercas:
Edipokbelo,
Existe sim uma maneira mais fácil:
ResultSetr=st.executeQuery("SELECT cd_Cpf FROM Cliente WHERE cd_Cpf = '[telefone removido]'");if(r.next()){System.out.println("CPF já Existe");}else{System.out.println("CPF Válido");}
Espero ter ajudado
abs
Fio, esta resposta do nosso amigo é bem mais facil alem de mais “rapida” em materia de performance rsrsr
Imagina se vc tiver 1000000000000000000000 cpf cadastrados.
Voce vai ficar comparando um por um até encontrar algum igual ou nao??
Não faz sentindo entende?
Faça como descrito acima. Um select onde busca o cpf informado, se encontrar existe, caso contrario nao existe.
Bem mais rapido e facil nao acha? rsrs
Abraço
jeancz
danilopelegrino:
thundercas:
Edipokbelo,
Existe sim uma maneira mais fácil:
ResultSetr=st.executeQuery("SELECT cd_Cpf FROM Cliente WHERE cd_Cpf = '[telefone removido]'");if(r.next()){System.out.println("CPF já Existe");}else{System.out.println("CPF Válido");}
Espero ter ajudado
abs
Fio, esta resposta do nosso amigo é bem mais facil alem de mais “rapida” em materia de performance rsrsr
Imagina se vc tiver 1000000000000000000000 cpf cadastrados.
Voce vai ficar comparando um por um até encontrar algum igual ou nao??
Não faz sentindo entende?
Faça como descrito acima. Um select onde busca o cpf informado, se encontrar existe, caso contrario nao existe.
Bem mais rapido e facil nao acha? rsrs
Abraço
E um índice para este campo na base de dados irá melhorar ainda mais.
pmlm
Se o campo é chave primária (e faz sentido que seja) então o índice é automaticamente criado.
jeancz
Bem lembrado
danilopelegrino
jeancz:
danilopelegrino:
thundercas:
Edipokbelo,
Existe sim uma maneira mais fácil:
ResultSetr=st.executeQuery("SELECT cd_Cpf FROM Cliente WHERE cd_Cpf = '[telefone removido]'");if(r.next()){System.out.println("CPF já Existe");}else{System.out.println("CPF Válido");}
Espero ter ajudado
abs
Fio, esta resposta do nosso amigo é bem mais facil alem de mais “rapida” em materia de performance rsrsr
Imagina se vc tiver 1000000000000000000000 cpf cadastrados.
Voce vai ficar comparando um por um até encontrar algum igual ou nao??
Não faz sentindo entende?
Faça como descrito acima. Um select onde busca o cpf informado, se encontrar existe, caso contrario nao existe.
Bem mais rapido e facil nao acha? rsrs
Abraço
E um índice para este campo na base de dados irá melhorar ainda mais.
Falo e disse meu camagada hehehe abraço
LPJava
acho que ter um primary-key sendo o cpf, ia facilitar no desenvolvimento. Outro detalhe nao use Statement no seu codigo java.
Pesquise por Injection SQL e vai descobrir o pq.
abracos,
edipokbelo
Na verdade eu uso o PreparedStatement, só peguei esse código para dar um exemplo.
Eu queria saber se ele retorna algum valor igual o JOptionPane, quando você clica em OK ele retorna 1, em cancelar 0 (acho que é assim não me lembro muito bem)
porque eu acho que nem tudo no BD pode ser PK, por exemplo se eu for fazer uma tabela para guardar o nome das pizzas, o nome seria PK?! :shock:
agora fiquei confuso, não manjo muito de BD
ctdaa
Olá. Sobre a tabela de “Pizzas”… bem, o nome da pizza pode até ser a chave primária… mas seria mais interessante ter um campo do tipo id único gerado pelo banco. Como se fosse um código do produto no cardápio
Poderia ser algo assim: