Sql

7 respostas
P

Oooooooooooooooi Gente!!!

Estou com um problema que eu acho que não é sério não, mas não está dando certo!!! :frowning:

É o Seguinte:

Eu tenho uma SQL que é por exemplo assim:

String nome = “D’ARC”;

“SELECT nome FROM TabelaNomes WHERE nome LIKE '%”+nome+"%’ ";

Resultado: Causará um erro por causa do ( ’ ).

Então, o que fiz:

String nome = “D’ARC”;

“SELECT nome FROM TabelaNomes WHERE nome LIKE “%”+nome+”%"";

Resultado: Se eu executo a SQL diretamente no banco, ela funciona certinho, mas se eu executo pelo java´, também dá erro.

Alguém pode me dizer porque???, Eu não estou entendendo!!! :roll:

7 Respostas

D

Tente:

“SELECT nome FROM TabelaNomes WHERE nome LIKE %’”+nome+"’%";

OK?

P

Caro Denis:

Essa Select funcionaria se eu não tivesse ( ’ ) no meio do meu nome.
Por exemplo: para nome igual a D’ARC, ela não funciona devido à aspas simples.

fenrir

Altere seu código para usar PreparedStatements.

String sql = "SELECT * FROM tblClientes WHERE ID=?"; PreparedStatement stmt = myConnection.prepareStatement(sql); String id = "D'ARC"; stmt.setObject(1, id); Resultset rs = stmt.executeQuery();

A grosso modo é mais ou menos isso.
myConnection é um objeto do tipo Connection.

Veja o JavaDoc dessas classes! :slight_smile:

wbsouza

O PreparedStatement além de resolver este problema, também não fica mandando um comando SQL diferente a cada vez para o banco.

Quando você usa parameters, o banco não tem que fazer parse, escolher um plano de acesso, etc. Ou seja é bem melhor que usar o SQL “na dura”.

[]s, Welington B. Souza

M

Também estou com um problema parecido…

Quando eu insiro algum dado (usando o exemplo de D’ARC) no campo “nomeJTextField” ele dá pau e não insere nada…sem contar que não dá nenhum códgio de bug ou algo parecido…

Alguém pode me ajudar?

furutani

Maur?io Pais:
Também estou com um problema parecido…

Quando eu insiro algum dado (usando o exemplo de D’ARC) no campo “nomeJTextField” ele dá pau e não insere nada…sem contar que não dá nenhum códgio de bug ou algo parecido…

Alguém pode me ajudar?


Você tem que colocar antes do apostrofo um caracter de escape, no caso uma contra-barra
Ou usa um Prepared Statement que ele resolve isso por você

ViniGodoy

Mauricio, da próxima vez, ao sair postando sua dúvida em tópicos abandonados, abra o seu próprio tópico, ok?

Criado 26 de junho de 2003
Ultima resposta 30 de nov. de 2008
Respostas 7
Participantes 7