Jsp, mysql %

2 respostas
T

Pessoal, to usando aqui jsp com o banco mysql e surgiu uma dúvida …talvez um pouco simples…mas fiquei na dúvida… …
pq quando agente ta fazendo uma consulta sql pela classe java agente passa o comando %% como está abaixo e quando agente vai direto no banco (o mysql) ele não aceita os mesmos caracteres retornando o erro como ta no segundo código. O “%” transforma-se em ’ aspas simples?

try { String sql = "SELECT * FROM cliente WHERE cpf LIKE ?"; PreparedStatement pstmt = Conexao.getConexao().prepareStatement(sql); pstmt.setString(1, "%"+cpf+"%"); ResultSet rs = pstmt.executeQuery();

SELECT * FROM cliente WHERE cpf LIKE %024888999-32%
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘%024888999-32%’ at line 1

2 Respostas

vinicius.martinez

Troque:

try { String sql = "SELECT * FROM cliente WHERE cpf LIKE ?"; PreparedStatement pstmt = Conexao.getConexao().prepareStatement(sql); pstmt.setString(1, "%"+cpf+"%"); ResultSet rs = pstmt.executeQuery();

Por:

try { String sql = "SELECT * FROM cliente WHERE cpf LIKE ?"; PreparedStatement pstmt = Conexao.getConexao().prepareStatement(sql); pstmt.setString(1, "%'"+cpf+"'%"); ResultSet rs = pstmt.executeQuery();

  • só inclui uma aspas simples ’ em nos lados do “%”
T

OK. ACho que entendi o recado.
Quando passa só o %% é, sem as aspas simples, ele busca qualquer objeto que tenha pelo menos parte do campo buscado. Por exemplo se eu botar 2 no campo de busca ele traria qualquer cpf que tivesse o numero 2. Enquanto o %’ '%, contendo aspas simples, pesquisa exatamente o termo que é buscado. Por tanto, se colocasse só o número 2 nesta busca ele não retornaria nada.

Acho que é isso.
Valeu!!

Criado 1 de março de 2010
Ultima resposta 1 de mar. de 2010
Respostas 2
Participantes 2