Select+jsp+query

10 respostas
T

Oi gente

Estou com uma query processando normal, mas surgiu uma duvida diante de um erro de logica

Eu tenho uma jsp que tem um campo de busca. Ate ai tudo normal, funciona ok

Mas surgiu uma duvida quando eu coloco por exemplo da seguinte maneira:

Avaliado para venda
Avaliado para venda e compra
Não avaliado

Se eu colocar uma das 3 frases acima faltando alguma palavra, a query ja nao me retorna nada. Eu tenho que colocar exatamente toda ela.

Minha linha esta asssim.

..
queryGeral.append("FROM status s,  fabricante f ").append("s.descricao like ? ")
..

Desta forma ele me retorna qualquer consulta, se eu colocar uma palavra só, ele me retorna tudo, mas caso eu coloque duas ele me retorna zero registros.

Voces tem ideia disso?

obrigada,

10 Respostas

J

Faaaala tatiana.sch,
na verdade a sintaxe do Like é esta:

String strSelectCliente = "SELECT * FROM NomeDaTabela WHERE nome LIKE '%"+ParametroDeBusca+"%'";

É preciso colocar %% no like, procure no google sobre o like tem exemplos !!

Vlwz

T

Ola javajc,

muitooo brigadaa ! :slight_smile:

Ajudou muito

T

Eu procurei e analisei o processo do parametro(com o like), mas agora, ele esta dando erro abaixo:

..
Parameter index out of range (1 > number of parameters, which is 0).
..

A linha ficou desta forma:

.
queryGeral.append("FROM status s,  fabricante f ").append("s.descricao like '%"+request.getParameter("nome")+"%' ")
.
julianosts

Tatiana,

Joga seu stacktrace ai para a galera dar uma olhada…

abs,

drigo.angelo

tatiana.sch:
Eu procurei e analisei o processo do parametro(com o like), mas agora, ele esta dando erro abaixo:

..
Parameter index out of range (1 > number of parameters, which is 0).
..

A linha ficou desta forma:

.
queryGeral.append("FROM status s,  fabricante f ").append("s.descricao like '%"+request.getParameter("nome")+"%' ")
.


Não faça isso :!:

Melhor você utilizar prepared statement, como voce colocou no primeiro post…

Só muda na hora de adicionar o parametro, tipo

stmt.setString(n, "%"+request.getParameter("x")+"%");

Assim sua app fica mais segura e portavel :smiley:

T

Bem, o trecho do codigo que monta a query sao esses, mas consegui mudar para a sugestao que me indicou

..
 StringBuffer query = new StringBuffer();
..
if (tipoPesquisa != null && tipoPesquisa.equalsIgnoreCase("nome")) {
queryGeral.append("FROM status s,  fabricante f ").append("s.descricao like ?")
}
...
...
  <c:when test="${tipoPesquisa == 'nome'}">
        <sql:query dataSource="jdbc/teste2010" var="nomesLista" scope="request" sql="${query}">
            <sql:param value="${nome}"/>
            <sql:param value="${queryOffset}"/>
            <sql:param value="${qtdeNomes}"/>
        </sql:query>
    </c:when>
..

Esta dificil :frowning:

J

Faaala tatiana.sch,
este erro pode pq o Like não está recebendo nenhum parametro para pesquisa, dê um System.out.println(); em request.getParameter(“nome”);

T

Poxa, agora o erro foi esse:

..
java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
..
J

Faaala tatiana.shc

provavelmente este erro está ocorrendo pq vc está tentando exibir dados que não foram encontrados no banco de dados. faça o seguinte:

String strQuery = "SELECT * FROM suaTabela"
PreparedStatment smt = (PreparedStatment) connection.preparedStatmentString(strQuery);
ResultSet resultado =smt.executeQuery();

if(resultado.next()){

System.out.println(resultado.getString("nome_da_coluna"));

}
connection é um objeto instanciado de uma classe que faz a conexao com o seu banco de dados. Qualquer dúvida da o grito que a gente socorre !!! rsrsr

Evite usar este tipo que código com injection. Procure por MVC (MODEL VIEW CONTROL)

T

Ah, mandei uma mp

Criado 24 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 10
Participantes 4