Erro ao tentar consultar usando like

5 respostas
L

Olá amigos,

estou com um erro ao tentar fazer uma consulta ao BD usando o seguinte código:

package br.com.cobra; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

public class TiraAspas { 
    
   private static String localidade; 
   private static String localidadeAux; 
   private static String aspa = "'"; 
   private static final String seleciona = "select distinct localidae FROM prefixos where localidae like '"+aspa+"'"; 
   //private static final String atualiza = "update prefixos set localidae='"+localidade+"' where localidae like '"+aspa+"'"; 
    
   public static void atualizaBanco(){ 
       
      Conexao conexao = new Conexao(); 
      Connection con = null; 
      try { 
         con = conexao.retornaConexao(); 
         if(con!=null){ 
             
            PreparedStatement ps = con.prepareStatement(seleciona); 
            ResultSet rs = ps.executeQuery(); 
             
            while(rs.next()){ 
               localidade = rs.getString("localidae"); 
               //localidadeAux = tiraAspas(localidade); 
               //ps.executeUpdate(atualiza); 
               System.out.println(localidade); 
            } 
             
         }else{ 
            System.out.println("Ocorreu um erro ao instanciar o bd!"); 
         } 
      } catch (SQLException e) { 
         e.printStackTrace(); 
      } 
       
   } 
    
   /*public static String tiraAspas(String aux){ 
      char aspa = aux.charAt(39); 
      char branco = aux.charAt(32); 
      aux.replace(aspa,branco); 
      return aux; 
   }*/ 
    
   public static void main (String[] args){ 
      atualizaBanco(); 
   } 

}

O erro ocorre ao tentar consultar a aspa, pois quero todos os registros que contenham aspa, tentei fazer essa consulta em VB e também ocorre o mesmo erro.

Grato.

5 Respostas

M

Afinal… qual é o erro?

bem like deve seguir este padrão:

deve ser este o erro.

:okok:

L

Amigo, eu estou querendo fazer uma consulta de todos os registros que contenham aspa simples (’).
PS: EU SEI COMO SE USA O CAMANDO LIKE, DETALHE, ESTOU USANDO O BANCO DE DADOS ACCESS!!!

W
Que eu saiba é pq vc está tentando fazer a pesquisa por aspas('), e aspas no sql é reservado para caracteres, o que vc pode fazer pra solucionar esse problema é troque:
private static final String seleciona = "select distinct localidae FROM prefixos where localidae like '"+aspa+"'";
Por:
private static final String seleciona = "select distinct localidae FROM prefixos where localidae like ?";
E em:
try {
         con = conexao.retornaConexao();
         if(con!=null){
             
            PreparedStatement ps = con.prepareStatement(seleciona);
            //ADICIONAR
            ps.setString(1,aspas);
            ResultSet rs = ps.executeQuery();
             
            while(rs.next()){
               localidade = rs.getString("localidae");
               //localidadeAux = tiraAspas(localidade);
               //ps.executeUpdate(atualiza);
               System.out.println(localidade);
            }

Acho q é isso.[/code]

W

Só mais um detalhe, substitua:

por:

Acho q agora vai:)

L

Valeu Vagner, funcionou certinho, eu tava testando tanta coisa que até esqueci de passar em % mas blz, brigadão pelo help :grin:

Um abraço.

Criado 5 de agosto de 2005
Ultima resposta 5 de ago. de 2005
Respostas 5
Participantes 3