Pesquisa no banco com like[resolvido]

17 respostas
P

como pesquisar no banco uma palavra especifica em meio a uma frase?Por exemplo eu tenho salvo no campo endereço a rua,numero e bairro e eu quero fazer uma pesquisa por bairro,isto é possivel?
obg

17 Respostas

Z

usa o LIKE

P

neste link tem mais algumas coisas referentes ao uso do like http://www.techonthenet.com/sql/like.php mas quando se quer comparar ao texto de um jtexfield como ficaria poi assim resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like='"+ t5.getText() +"' ");da erro de sintaxe para que serve % e _?
obg

Z

paty_trind:
neste link tem mais algumas coisas referentes ao uso do like http://www.techonthenet.com/sql/like.php mas quando se quer comparar ao texto de um jtexfield como ficaria poi assim resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like='"+ t5.getText() +"' ");da erro de sintaxe para que serve % e _?
obg

O LIKE não tem o =

O % é qualquer caractere e em qualquer quantidade

O _ é apenas um caractere qualquer

Pode vir antes, depois ou antes e depois do texto que você quer procurar no banco de dados

EX:

‘TE___’ ou ‘TE%’

Vai achar:

TESTE
TEXTO

EDIT:

No seu caso, vc usaria o % antes e depois, assim o banco te retornaria registros que tem essa palavra em qualquer posição da coluna

P

ah tah!
entendi! :lol:
muito obrigada
:smiley: :smiley: :smiley:

P

so mais uma duvida a sintaxe disto como ficaria?to tentando fazer tipo %'"+ t5.getText()+"'% mas não ta dando mto certo :oops:
resolvi este problema fazendo o seguinte joguei o valor de t5.getText() numa variavel do tipo String c e

=]

V

Sei que resolveu o seu problema!
tb tive essa dificuldade com like

Isso talvez te ajude:

LIKE ‘A%’ - Todas as palavras que iniciem com a letra A;

LIKE ‘%A’ - Todas que terminem com a letra A;

LIKE ‘%A%’ - Todas que tenham a letra A em qualquer posição;

LIKE ‘A_’ - String de dois caracteres que tenham a primeira letra A e o segundo caractere seja qualquer outro;

LIKE <em>A’ - String de dois caracteres cujo primeiro caractere seja qualquer um e a última letra seja A;

LIKE <em>A</em> - String de três caracteres cuja segunda letra seja A, independentemente do primeiro ou do último caractere;

LIKE '%A</em> - Todos que tenham a letra A na panúltima posição e a última seja qualquer outro caractere;

LIKE ‘_A%’ - Todos que tanham a letra A na segunda posição e o primeiro caractere seja qualquer um;
V
resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like "%'+ t5.getText() +"' ");

traz tudo que começa com a primeira letra! outra coisa Like nao tem “=” é like ‘’%'t5.getText()

resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like "%'+ t5.getText() +'%" ");

traz tudo que contenha no meio da tua string!

bom é isso

P

bah !!
obrigada valramos
pq mesmo q eu tnha resolvido o problema eu tava com esta duvida de como usar % e _ ,e duvidas de sintaxe tambem e agora eu entendi a maneira correta de resolver isto !!!
muito obrigada :lol: :lol:

V

por nada!!!

P

a unica coisa so é q tipo eu não consegui pesquisar do jeito q tu postou

resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like “%’+ t5.getText() +”’ ");

traz tudo que começa com a primeira letra! outra coisa Like nao tem “=” é like ‘’%'t5.getText()

view plaincopy to clipboardprint?
resultado = comando.executeQuery("select nome,Id from aluno where endereco_residencial like “%’+ t5.getText() +’%” ");

da este erroInvalid character constant
dai eu to fazendo assim"select nome,endereco_residencial from aluno where endereco_residencial like '"+ c.concat("%") +"'" na query

V

tenta colocar o % depois do + pode ser que em java seja diferente

mas o segredo do like ta no % que é o coringa pra trazer os dados que vc quer!

vou te dar o exemplo em SQL

select nome, endereco from alunos where nome like ‘%JOSÉ’ // traz todos que começam com o nome JOSÉ
select nome, endereco from alunos where nome like ‘%ARAUJO%’ traz todos os nomes que contem o sobrenome ARAUJO

entendeu?

P

fiz assim mas da este erroThe operator & is undefined for the argument type(s) java.lang.String,
dai tentei de novo dakele jeito q tu tinha dito e fiz assim resultado = comando.executeQuery("select nome,endereco_residencial from aluno where endereco_residencial like '&"+ t5.getText() +"&'");
so q ele pesquisa por &texto do t5& por isto q minha pequisa nao retorna nada mas é q eu devia fazer do jeito q tu disse antes ne &a…
so q tipo eu qro fazer a pesq em cima do q o usuario digitar entao teria q ficar assim&t5.getText()?
obg

V

o operador do like nao é '&'
e sim ‘%’

P

agora ta dndo certo a pesquisa usandoresultado = comando.executeQuery("select nome,endereco_residencial from aluno where endereco_residencial like '%"+c +"%'");
eu tinha trocado % por & e nem tinha percebido
obg
=]

V

:slight_smile: :wink:

Vou te dar uma dica:

Estudar SQL é tão importante quanto estudar Java!

pois é o SQL que vai inserir, salvar, recuperar e deletar teus dados!

principalmente pra recuperar com o comando SELECT!

pra quem ta inicianco o USE a cabeça SQL é bem instrutivo

Abraço e boa sorte

P

obg :lol:

S

Moçada, estou com uma dúvida, espero que possam me ajudar:
Tenho abaixo um método que lista um objeto do tipo empresa, e gostaria de mostrar os valores em uma página jsp, de preferencia através de JSTL, por sinal, isto eu consegui, mas agora, o meu problema é outro :
O mesmo dado é listado várias vezes, e não com dados diferentes.
por gentileza, verifiquem o que eu estou errando e me ajudem, por favor, aguardo a resposta anciosamente.
Muito obriagado.

É este o DAO:
public Empresa pesquisa(String nome) throws SQLException { 
ResultSet rs = getResultSet(nome); 
Empresa empresa = new Empresa(); 
if (rs.next()) { 
empresa = new Empresa(); 
empresa.setCod_empresa(rs.getLong("cod_empresa")); 
empresa.setNome(rs.getString("nome")); 
empresa.setTelefone(rs.getString("Telefone")); 
empresa.setEmail(rs.getString("Email")); 
empresa.setRamodeatividade(rs.getString("Ramodeatividade")); 
empresa.setSite(rs.getString("Site")); 
empresa.setEndereco(rs.getString("Endereco")); 
empresa.setDescricao(rs.getString("descricao")); 
} 
rs.close(); 

return empresa; 
} 
/** 
* Consulta um objeto Empresa com o parametro nome da Empresa 
* usando like para banco de dados 
* @param nome 
* @return 
* @throws SQLException 
*/ 
public List&lt;Empresa&gt; pesquisaEmpresas(String nome) throws SQLException { 

List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;(); 

ResultSet rs = getResultSet(nome); 
while (rs.next()) { 
empresas.add(pesquisa(nome)); 
} 

return empresas; 
} 

public ResultSet getResultSet(String nome) throws SQLException{ 

String sql = "select * from empresa where nome like '" 
+ nome + "%'"; 

PreparedStatement stmt = this.connection.prepareStatement(sql); 

ResultSet rs = stmt.executeQuery(); 

return rs;

Esta é a Servlet:

package br.com.lza.mvc; 

import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import br.com.lza.jdbc.dao.EmpresaDAO; 
import br.com.lza.jdbc.modelo.Empresa; 

public class PesquisaEmpresaLogic implements BusinessLogic { 

@Override 
public void execute(HttpServletRequest request, HttpServletResponse response) 
throws Exception { 
System.out.println("Executando a lógica e redirecionando..."); 

List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;(); 
String nome = (request.getParameter("nome")); 

request.setAttribute("nome", nome); 

EmpresaDAO empresadao; 
try { 
empresadao = new EmpresaDAO(); 
empresas = empresadao.pesquisaEmpresas(nome); 
request.setAttribute("empresa", empresas); 
RequestDispatcher rd = request 
.getRequestDispatcher("visao/resultpesq.jsp"); 
rd.forward(request, response); 
} catch (SQLException e) { 
} 
} 
}
Parte que lista os dados da pesquisa:
&lt;c:forEach var="bean" items="${empresa}"&gt;
			&lt;tr&gt;

				&lt;td&gt;${bean.nome}&lt;/td&gt;
				&lt;td&gt;${bean.email}&lt;/td&gt;
				&lt;td&gt;${bean.endereco}&lt;/td&gt;
				&lt;td&gt;${bean.telefone}&lt;/td&gt;
				&lt;td&gt;${bean.ramodeatividade}&lt;/td&gt;
				&lt;td&gt;${bean.site}&lt;/td&gt;
				&lt;td&gt;${bean.descricao}&lt;/td&gt;
&lt;/c:forEach&gt;
Criado 26 de fevereiro de 2011
Ultima resposta 31 de jul. de 2011
Respostas 17
Participantes 4