Estou criando uma pagina em JDBC que quando usuário digitar seu cpf
o numero apareça na tela que tô na divida na query se é “select * from pessoa where cpf=?”
ou “select * from pessoa where cpf like %?”
Boa noite amigo!
A primeira forma é correta, “select * from pessoa where cpf=?”;
Suponha que tenha o cpf [CPF removido], logo teu select deverá ficar = select * from pessoa where cpf= ‘[CPF removido]’.
Mais sugiro que vc não use sql nativo pq poderá permitir ataque de “SQL injection”.
Segue um exemplo da forma mais aconselhada:
publicAlunoconsultarPorCPF(Stringcpf)throwsAuadException{try{Stringsql="select * from aluno where cpf =:cpf";Queryquery=em.createNativeQuery(sql,Aluno.class);query.setParameter("cpf",cpf);return(Aluno)query.getSingleResult();}catch(NoResultExceptione){returnnull;}catch(Exceptione){UtilLog.log.error(e.getMessage(),e);thrownewAuadException(e.getMessage());}}
A
ADEMILTON
JDBC não é obrigatoriamente porta de entrada pra SQL Injection… PreparedStatement existe, pessoal!!
W
wilsontads
wendelguedes:
Boa noite amigo!
A primeira forma é correta, "select * from pessoa where cpf=?";
Suponha que tenha o cpf [CPF removido], logo teu select deverá ficar = select * from pessoa where cpf= '[CPF removido]'.
Mais sugiro que vc não use sql nativo pq poderá permitir ataque de "SQL injection".