Helder8
#1
Boa tarde Pessoal,
Preciso fazer um select no banco de dados usando like, via ODBC, mas a String nome, pode vir com aspas simples exemplo:
String nome = “Mc’Donalds”;
select * from Teste like ‘%" + nome + "%’;
Dá erro, pois, o like acaba sendo usado com aspas simples.
Alguém pode me ajudar, não tenho idéia de como fazer isso.
Obs: Não posso remover a aspas simples no nome.
Obrigado
EVITE USAR A PORCARIA DO STATEMENT
use PreparedStatement e use os metodos setString (no seu caso), para definir os parametros de uma pesquisada no google sobre o PreapredStatement.
por exemplo, a sua query
select * from Teste like '%" + nome + "%';
vai ficar
String SELECT = "select * from Teste like ? "
onde o ? é o seu parametro.
Para usar, basta setar o ? com a variavel nome:
stmt = SuaConexao.prepareStatement(SELECT);
stmt.setString(1, nome);
ResultSet rs = stmt.executeQuery();
Sou da teoria do colega, utilize a classe PreparedStatement ao invés do Statement, mas respondendo a pergunta tente o seguinte
String nome = "Mc\'Donalds";
select * from Teste like '%" + nome + "%'";
[quote=thiago.correa]Sou da teoria do colega, utilize a classe PreparedStatement ao invés do Statement, mas respondendo a pergunta tente o seguinte
[code]
String nome = “Mc’Donalds”;
select * from Teste like ‘%" + nome + "%’";
[/code][/quote]
Thiago,
Não sei em quais bancos utilizar barras funciona, mas acredito que o padrão que seja dobrar as apas simples:
String nome = "Mc''Donalds";
"select * from Teste like '%" + nome + "%'";
De qualquer forma, melhor é sempre utilizar o prepared…
AbelBueno,
como disse, eu concordo com o uso do PreparedStatement, quanto ao uso de , foi um palpite
Helder8
#7
Então pessoal,
Consegui resolver, para funcionar no banco de dados Oracle, deve fazer o seguinte:
String nome = "Mc'Donalds";
nome = nome.replace("'","Chr(34)");
String sql = "select * from Empresa like '%"+ nome + "%';
Dessa forma ao passar o select via ODBC, o banco de dados vai entender que o caracter quote , seja aspas simples.
Exemplo de caracteres com aspas simples e aspas dupla:
Chr(34) = ’
Chr(39) = "
Valeu Pessoal,
Abs.