Tenho um banco de dados mysql com uma tabela chamada funcionario que tem uma chave primaria chamada cepf.Gostaria antes de inserir dados nesta tabela veirificar se a dados igual .
JTextField = t_1;
JTextField = t_2;
JTextField = t_3;
stm.executeUpdate("INSERT INTO funcionario(cepf,nome,cargo)Values('"+ t_1.getText()+"','"+t_2.getText()+"','"+t_3.getText()+"')");
if (t_1==cepf )como que eu verifico isto ?depois disto exibir um menssagem falando que ja existe funcionario com este cpf
por favor me ajude
você pode definir todos os teus campos ( cepf,nome,cargo ) como PK, desta maneira no momento do INSERT o MYSQL verificará se não existem campos iguais. Assim nenhum teste prévio será necessário, pois o mysql se encarrega de tudo. Você preciará somente tratar a exception lançada pelo java.
ao inves de um if/else nao seria melhor um foreach? isso criando um arraylist…
mesmo que tentasse inserir um dado duplicado o sql daria erro por já existir, é legal vc tratar isso na sua aplicação, caso nao consiga inserir por ja existir esse registro vc desvia o código, tipo, pedindo pra pessoa digitar outro cepf, e exibindo essa mensagem de duplicação.
o que não é muito legal é ficar fazendo SELECT para buscar dados somente para compará-los e depois INSERT,
isso gera acesso desnecessário ao teu banco de dados… temos que otimizar ao máximo o acesso ao BD, assim
nossos aplicativos ficarão mais rápidos. Digo isso, pois já senti na pele o que é um aplicativo com Querys não otimizadas e acessos desnecessários. A principio parece que não dá nada… mais depois :thumbdown:
“REPLACE funciona exatamente como o INSERT, exceto que se um registro antigo na tabela tem o mesmo valor que um novo registro em um índice UNIQUE ou PRIMARY KEY, o registro antigo é deletado antes que o novo registro seja inserido…”
foi isso q eu entendi?
usando o REPLACE o registro antigo é apagado e inserido o novo correto? sendo assim digamos que tenhamos uma pessoa com certo CPF (seu próprio cpf), e tentemos inserir outra pessoa com o mesmo cpf (erro de digitação), ele apaga a pessoa antiga(certa) e insere a nova (errada)? isso nao gera erro de informação?
“REPLACE funciona exatamente como o INSERT, exceto que se um registro antigo na tabela tem o mesmo valor que um novo registro em um índice UNIQUE ou PRIMARY KEY, o registro antigo é deletado antes que o novo registro seja inserido…”
foi isso q eu entendi?
usando o REPLACE o registro antigo é apagado e inserido o novo correto? sendo assim digamos que tenhamos uma pessoa com certo CPF (seu próprio cpf), e tentemos inserir outra pessoa com o mesmo cpf (erro de digitação), ele apaga a pessoa antiga(certa) e insere a nova (errada)? isso nao gera erro de informação?[/quote]
Você não entendeu errado…o REPLACE é perigoso mesmo!
Mas para não ter nenhum problema com o REPLACE utilize da seguinte maneira:
1- Quando vc esta cadastrando um usuário novo faça com INSERT dessa maneira se houver a tentativa de um cadastro duplicado uma exception será gerada então vc poderá tratá-la.
2- Quando for alterar um cadastro, daí sim utilize REPLACE (em vez do UPDATE), pois naturalmente você vai liberar todos os campos para serem alterarados, exceto o campo CPF (PK), pois o CPF é único e não tem porque alterar (ninguém por meios legais troca o número do cpf). Desta maneira ninguém vai detonar o BD por erro de digitação.
É Claro que existem muitas outras práticas, as tuas necessidades dirão qual é a melhor!