Ajuda - gravar dados no postgresql [RESOLVIDO]

Boa tarde pessoal,

Primeiramente gostaria de dizer que sou iniciante em java e que é minha primeira postagem aqui no GUJ, de ante mão peço desculpas caso esse post não esteja de acordo com alguma regra.

Estou com um problema ao gravar informações em uma base de dados no Postgresql, a conexão com a base de dados é realizada com sucesso, eu preenchi os campos e o sistema deveria gravar no banco de dados as informações ao clicar em Salvar, porém me deparo com a seguinte mensagem:

org.postgresql.util.PSQLEXEPTION: ERRO: erro de sintaxe em ou próximo a “)” posição 84

Eu já vasculhei todo o código em todas as classes e não é apresentada nenhuma advertência ou erro no código, procurei tbm em todas linhas 84 do código e não vi nada de errado.

Então gostaria de saber se alguém consegue me ajudar a localizar o problema, se vocês recebessem o erro acima como localizariam o problema ?

Agradeço desde de já ! :slight_smile:

Você está usando TextField para salvar os dados? Deve ser exatamente a sintaxe, as vezes um paranteses enche o saco mesmo. Caso for TextField que estiver usando, veja um exemplo da sintaxe que eu uso em um programinha aqui. No caso esse TextField é static, isso facilita…:slight_smile:


st.executeUpdate(“INSERT INTO cliente (codigo,nome,endereco,telefone,email,cpf) VALUES (”
+ JanelaPrincipal.txfCodigoCliente.getText() + “,’”
+ JanelaPrincipal.txfNomeCliente.getText() + “’,’”
+ JanelaPrincipal.txfEnderecoCliente.getText() + “’,’”
+ JanelaPrincipal.txfTelefoneCliente.getText() + “’,’”
+ JanelaPrincipal.txfEmailCliente.getText() + “’,’”
+ JanelaPrincipal.txfCpfCliente.getText() + “’)”);

1 curtida

E nada disso teria acontecido (ta bom, a probabilidade seria menor) se tivesse usada o …
https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html
chega de concatenar strings né

1 curtida

Consegui Resolver, Muito Obrigado aí galera ! (Rolou até comemoração quando funcionou “FDP aqui sou eu !” :joy:). kkkkkk

Eu tinha dois problemas uma vírgula que só consegui encontrar Depurando e o outro é que minha tabela foi criada com a primeira letra em caixa alta = Medicos, o código só funcionou quando eu alterei o nome da tabela todo para minusculo = medicos.

Vlw

Daniel Silva, te aconselho a seguir a recomendação do Igomes, pois o modo mais correto de fazer esse “apontamento” é:

PreparedStatement pst = con.PreparedStatement(INSER INTO Medicos (nome, idade, crm, telefone) VALUES (?,?,?,?);
pst.setString(1, textFielNome.Text);
e assim por diante…

Concatenar strings em uma consulta a banco de dados não é muito aconselhável, acho que rola algo até de ataque via SQL Injection.

1 curtida

Oba, legal igomes, ainda não ‘experimentei’ esse codigo na pratica, obg tmbm, é sempre bom estar se atualizando, afinal, recomendações dos proprios engenheiros da sun/oracle são sempre os melhores, se tratando de Java