Aspas simples em jtextfield [ Resolvido ]

4 respostas
R

ola como resolver isso, toda vez q eu coloco aspas simples dentro de um jtextfield da erro de syntax ao gravar no banco...

String sqlinsert ="INSERT INTO TABELA ( ENDERECO, BAIRRO, " +
                        "NUMERO, CIDADE, UF, CEP, TELEFONE_1, TELEFONE_2, EMAIL, OBS, TIPO) values ('"+
                   tf_endereco.getText()+"','"+
                   tf_bairro.getText()+"','"+
                   tf_numero.getText()+"','"+
                   tf_cidade.getText()+"','"+
                   tf_uf.getText()+"','"+
                   ft_cep.getText()+"','"+
                   ft_telefone1.getText()+"','"+
                   ft_telefone1.getText()+"','"+
                   tf_email.getText()+"','"+
                   ta_obs.getText()+"','"+
                   tipo+"')";

4 Respostas

Adelar

Olá,
filtra o campo e substitui cada aspa simples por \’

Att.

R

Adelar:
Olá,
filtra o campo e substitui cada aspa simples por \’

Att.

desculpa ai mais eu nao entendi ! :slight_smile:
como q eu faço isso rs

ViniGodoy

Use um preparedStatement:

String sqlinsert ="INSERT INTO TABELA ( ENDERECO, BAIRRO, NUMERO, CIDADE, UF, CEP, TELEFONE_1, TELEFONE_2, EMAIL, OBS, TIPO) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "; PreparedStament ps = conn.prepareStatement(sqlinsert); ps.setString(1, tf_endereco.getText()); ps.setBairro(2, tf_bairro.getText()); ps.setInt(3, Integer.parseInt(tf_numero.getText()); ps.setString(4, tf_cidade.getText()); ps.setString(5, tf_uf.getText()); ps,setString(6, ft_cep.getText()); ps.setString(7, ft_telefone1.getText()); ps.setString(8, ft_telefone2.getText()); ps.setString(9, tf_email.getText()); ps.setString(10, ta_obs.getText()); ps.setInt(11, tipo); ps.executeUpdate();

O PreparedStatement trata automaticamente:

Aspas simples dentro de Strings (note que vc não precisa colocar as ? entre aspas);

Tipos primitivos;

Tipos de data;

Ele impede a falha de SQL Injection, que existe na concatenação direta de sqls.

PS: Note que vc concatenou por engano 2 vezes o telefone 1 ali em cima.

R

ViniGodoy:
Use um preparedStatement:

String sqlinsert ="INSERT INTO TABELA ( ENDERECO, BAIRRO, NUMERO, CIDADE, UF, CEP, TELEFONE_1, TELEFONE_2, EMAIL, OBS, TIPO) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "; PreparedStament ps = conn.prepareStatement(sqlinsert); ps.setString(1, tf_endereco.getText()); ps.setBairro(2, tf_bairro.getText()); ps.setInt(3, Integer.parseInt(tf_numero.getText()); ps.setString(4, tf_cidade.getText()); ps.setString(5, tf_uf.getText()); ps,setString(6, ft_cep.getText()); ps.setString(7, ft_telefone1.getText()); ps.setString(8, ft_telefone2.getText()); ps.setString(9, tf_email.getText()); ps.setString(10, ta_obs.getText()); ps.setInt(11, tipo); ps.executeUpdate();

O PreparedStatement trata automaticamente:

Aspas simples dentro de Strings (note que vc não precisa colocar as ? entre aspas);

Tipos primitivos;

Tipos de data;

Ele impede a falha de SQL Injection, que existe na concatenação direta de sqls.

PS: Note que vc concatenou por engano 2 vezes o telefone 1 ali em cima.

opaaaa obrigado pela sugestao
valeuu

Criado 17 de junho de 2010
Ultima resposta 17 de jun. de 2010
Respostas 4
Participantes 3