Javafree
Página Inicial do Fórum > Banco de Dados - JDBC / SQL

[RESOLVIDO] Problema com o LIKE (Prepared Statement)



Criar novo tópico   Responder tópico


  1. Thurmiranda
    Posts:3


    Comment Arrow

    Publicado em: 30/05/2013 02:20:04

    Boa noite galera,

    Estou tendo um problema com o seguinte código ao usar o LIKE com o preparedStatement:

    String sql = "SELECT * FROM produto WHERE " +
    "nome LIKE ? OR " +
    "descricao LIKE ? OR " +
    "categoria LIKE ?";
    PreparedStatement preparedStatement = con.prepareStatement(sql);
    preparedStatement.setString(1, "'%" + pesquisa + "%'";
    preparedStatement.setString(2, "'%" + pesquisa + "%'";
    preparedStatement.setString(3, "'%" + pesquisa + "%'";
    ResultSet resultSet = preparedStatement.executeQuery();

    Após isso dou um next() no resultSet e pegos os valores.

    Mas, dando um sysout no preparedStatement, depois de dar os setStrings, ele me retorna o seguinte sql:

    SELECT * FROM produto WHERE nome LIKE '\'%a%\'' OR descricao LIKE '\'%a%\'' OR categoria LIKE '\'%a%\''

    Alguém sabe o por que desses caracteres estarem aí sem eu te colocado eles?
    Ele não retorna nada pro meu resultSet, já fiz uma verificação, mas se eu tento fazer uma busca direta no BD com esse sql e ele retorna um resultado.

    Estou usando o MySQL e queria que buscasse algo em todos os campos, de acordo com o que o usuário digitou.

    Desde já, obrigado.

    Arthur



  1. ElPsyCongroo
    Posts:1688


    Comment Arrow

    Publicado em: 30/05/2013 10:05:32


    Alguém sabe o por que desses caracteres estarem aí sem eu te colocado eles?



    Que caracteres? Está se refererindo ao %?
    Parece que sua Select está correta.


    _________________

    Programador Java

    I´m a mad scientist.

    Tag CODE:
    http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html



  1. Thurmiranda
    Posts:3


    Comment Arrow

    Publicado em: 30/05/2013 17:41:01

    O sql está assim:

    SELECT * FROM produto WHERE nome LIKE '\'%a%\'' OR descricao LIKE '\'%a%\'' OR categoria LIKE '\'%a%\'

    O correto não era ele estar assim?

    SELECT * FROM produto WHERE nome LIKE '%a%' OR descricao LIKE '%a%' OR categoria LIKE '%a%'

    Repare que tem umas barras (\) e umas aspas (') a mais que eu não coloquei aí... Se eu tiro elas e faço a consulta direto no BD, ele me retorna um resultado... Já se eu faço direto no Eclipse, ele não retorna nada.



  1. ElPsyCongroo
    Posts:1688


    Comment Arrow

    Publicado em: 30/05/2013 22:09:01

    Agora que eu vi:



    Vc está colocando um ' a mais. Deveria ser:

    _________________

    Programador Java

    I´m a mad scientist.

    Tag CODE:
    http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html



  1. Relacionados