Sql

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:

Tente:

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

OK?

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.

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:

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

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?

[quote=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?[/quote]
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ê

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