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
Pesquisa no banco com like[resolvido]
17 Respostas
usa o LIKE
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
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 assimresultado = 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
ah tah!
entendi! :lol:
muito obrigada

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
=]
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;
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
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:
por nada!!!
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
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?
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
o operador do like nao é '&'
e sim ‘%’
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
=]

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
obg :lol:
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.
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<Empresa> pesquisaEmpresas(String nome) throws SQLException {
List<Empresa> empresas = new ArrayList<Empresa>();
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<Empresa> empresas = new ArrayList<Empresa>();
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) {
}
}
}
<c:forEach var="bean" items="${empresa}">
<tr>
<td>${bean.nome}</td>
<td>${bean.email}</td>
<td>${bean.endereco}</td>
<td>${bean.telefone}</td>
<td>${bean.ramodeatividade}</td>
<td>${bean.site}</td>
<td>${bean.descricao}</td>
</c:forEach>