Dica sobre aspas

Galera, apenas uma dica pra resolver o problema de muitas pessoas (acredito…).

Eu estava com um problema com relação as aspas em um SQL, semelhante a:

INSERT INTO tabela SET campo1=’:campo1’ AND campo2=’:campo2’

Entao quando eu enviava esse sql para o banco de dados eu substituia onde existem os :campoN pelo nome do objeto JTextField correspondente, entao se por algum acaso existir uma aspas simples no conteúdo dos JTextField daria problema, a solução óbvia seria simplesmente dar um replace no conteudo do campo para trocar as aspas simples por “\’” , mas tentando isso simplesmente nao funcionou. Entao comecei a fazer testes e cheguei a seguinte solucao: trocar as aspas simples “’” por “\\\\’” e tudo funciona. Isso tudo acaba simplesmente aparecendo ’ que era o que eu precisava que acontecesse.

Se alguém conseguir explicar agradeço, mas fica ae uma dica pra quem ta com o mesmo problema, tenta substituir \’ por \\\\’ que deve funcionar…

[]'s

Você está tentando reinventar a roda, use PreparedStatement:

[code]PreparedStatement stmt = conexao.prepareStatement(“update tabela set campo1 = ?, campo2 = ? where id=?”);

stmt.setString(1, textField1.getText());
stmt.setString(2, textField2.getText());
stmt.setInt(3, 123);

stmt.executeUpdate();[/code]

http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html

[quote=“jairelton”]Você está tentando reinventar a roda, use PreparedStatement:

[code]PreparedStatement stmt = conexao.prepareStatement(“update tabela set campo1 = ?, campo2 = ? where id=?”);

stmt.setString(1, textField1.getText());
stmt.setString(2, textField2.getText());
stmt.setInt(3, 123);

stmt.executeUpdate();[/code]

http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html[/quote]

OBrigado pela dia, eu utilizo o preparedstatement em alguns projetos mas infelizmente neste caso não posso utilizar por que na verdade eu estou partindo de um JavaBean de conexão com o banco de dados que eu mesmo fiz, então no momento de enviar para o banco de dados ainda nem sei exatamente qual eh o tipo do dado que está sendo enviado e como é o próprio usuário do bean que faz o select, insert, update eu nao tenho os parâmetros e seus tipos.

Na verdade construí alguns JavaBeans para facilitar o desenvolvimento com BD, como venho do Delphi que já haviam componentes de acesso ao banco de dados nativos, tentei procurar isso em Java mas os que eu encontrei não funcionaram (na verdade gratuito encontrei apenas o SwingSet e me parece que esta cheio de bugs e pararam de desenvolver) então parti para uma solução própria, estão todos funcionando perfeitamente (Conexão, Query, Campos de texto, memo, checkbox, combobox, etc…) relacionados com dados, mas estava ampanhando no caso das aspas mesmo… só não consegui entender por que eu tive que colocar tantos \ pra fazer aparecer apenas 1, já que o normal seria colocar \ pra motrar 1 apenas.

Valeu!!!