Boa tarde pessoal, quem puder me ajudar, me dê uma luz pra esse erro que está dando quando tento inserir no banco de dados!
estou usando java, com sgbd postgresql!
o erro é: org.postgresql.util.PSQLException: ERRO: erro de sintaxe em ou próximo a “.0”
desde já agradeço a todos.
Posta a desgraça do código.
Quer que adivinhemos o que está errado?
rapaz, tu ta nervoso demais rsrsrsrsrs… brincadeira, já agradeço pela rapidez!
já vou postar o código carma…
ta ai porra:
private void jBSalvarActionPerformed(java.awt.event.ActionEvent evt) {
// Esse código utiliza o método validaFormulario para validar suas entradas
if ( validaFormulario(evt) ){
BD_Insere objBD = new BD_Insere(); // instancia a classe BancoDados
if (objBD.insereProjeto(titulo, cota_da_bolsa, edital, preco_material_consumo, preco_material_permanente,
preco_material_bibliografico, data_vigencia_ini, data_vigencia_fim)) {
System.out.println(titulo);
System.out.println(cota_da_bolsa);
System.out.println(edital);
System.out.println(preco_material_consumo);
System.out.println(preco_material_permanente);
System.out.println(preco_material_bibliografico);
System.out.println(data_vigencia_ini);
System.out.println(data_vigencia_fim);
JOptionPane.showMessageDialog(rootPane, "Dados gravados com sucesso",
"Confirmação de cadastro", JOptionPane.INFORMATION_MESSAGE);
jBLimparActionPerformed(evt);
dispose(); // Fecho o Frame atual
inicial obj = new inicial(); // Instancio o FramePrincipal
obj.setVisible(true);
} else {
JOptionPane.showMessageDialog(rootPane, "Dados não gravados",
"Alerta de erro", JOptionPane.ERROR_MESSAGE);
// Volta o cursor para o campo código
jTFTitulo.selectAll();
jTFTitulo.requestFocusInWindow();
}
}
}
public boolean insereProjeto(String titulo, String cotaDaBolsa, String edital,
double precoMaterialConsumo, double precoMaterialPermanente,
double precoMaterialBibliografico, String dataVigenciaInicio, String dataVigenciaFim){
boolean resp =true; // variável de retorno
con.conectar(); // abrir conexão com o banco de dados
// criar e executar a consulta ao banco de dados
String query = "INSERT INTO projeto (titulo, cota_da_bolsa, edital, preco_material_consumo" +
"preco_material_permanente, preco_material_bibliografico, data_vigencia_inicio, data_vigencia_fim) " +
"VALUES " +
"('"+titulo+"','"+cotaDaBolsa+"','"+edital+"',"+precoMaterialConsumo+"" +
""+precoMaterialPermanente+","+precoMaterialBibliografico+",'"+dataVigenciaInicio+"','"+dataVigenciaFim+"')";
con.inserir(query);
return resp;
}
[code]public void inserir(String query){
try {
comando.execute(query);
} catch (SQLException ex) {
Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
}
finally{
fechar();
}
}
void conectar() {
try {
Class.forName( "org.postgresql.Driver" ); // carrega classe de driver do banco de dados
// estabelece conexão com o banco de dados
conexao = DriverManager.getConnection( url, user, senha);
// cria Statement para consultar banco de dados
comando = conexao.createStatement();
System.out.println("Conectado!");
} catch (ClassNotFoundException e) {
imprimeErro("Erro ao carregar o driver", e.getMessage());
} catch (SQLException e) {
imprimeErro("Erro ao conectar", e.getMessage());
}
} // Fim do método conectar()
// Método privado que fecha a conexão com o Banco de Dados
void fechar() {
try {
comando.close();
conexao.close();
System.out.println(“Conexão Fechada”);
} catch (SQLException e) {
imprimeErro(“Erro ao fechar conexão”, e.getMessage());
}
} // Fim do método fechar()
// Método privado que imprime mensagens de erro provenientes Exceções
void imprimeErro(String msg, String msgErro) {
JOptionPane.showMessageDialog(null, msg + ": " + msgErro, “Erro crítico”, 0);
System.err.println(msg);
System.out.println(msgErro);
//System.exit(0);
} // Fim do método imprimeErro()[/code]
[code]void conectar() {
try {
Class.forName( "org.postgresql.Driver" ); // carrega classe de driver do banco de dados
// estabelece conexão com o banco de dados
conexao = DriverManager.getConnection( url, user, senha);
// cria Statement para consultar banco de dados
comando = conexao.createStatement();
System.out.println("Conectado!");
} catch (ClassNotFoundException e) {
imprimeErro("Erro ao carregar o driver", e.getMessage());
} catch (SQLException e) {
imprimeErro("Erro ao conectar", e.getMessage());
}
} // Fim do método conectar()
// Método privado que fecha a conexão com o Banco de Dados
void fechar() {
try {
comando.close();
conexao.close();
System.out.println(“Conexão Fechada”);
} catch (SQLException e) {
imprimeErro(“Erro ao fechar conexão”, e.getMessage());
}
} // Fim do método fechar()
// Método privado que imprime mensagens de erro provenientes Exceções
void imprimeErro(String msg, String msgErro) {
JOptionPane.showMessageDialog(null, msg + ": " + msgErro, “Erro crítico”, 0);
System.err.println(msg);
System.out.println(msgErro);
//System.exit(0);
} // Fim do método imprimeErro()[/code]
Aqui está o erro
String query = "INSERT INTO projeto (titulo, cota_da_bolsa, edital, preco_material_consumo" + /*Não existe vírgula entre um e outro*/
"preco_material_permanente, preco_material_bibliografico, data_vigencia_inicio, data_vigencia_fim)
estão faltando umas vígulas:
String query = "INSERT INTO projeto (titulo, cota_da_bolsa, edital, preco_material_consumo" +
", preco_material_permanente, preco_material_bibliografico, data_vigencia_inicio, data_vigencia_fim) " +
// ^ aqui
"VALUES " +
"('"+titulo+"','"+cotaDaBolsa+"','"+edital+"',"+precoMaterialConsumo+"" +
", "+precoMaterialPermanente+","+precoMaterialBibliografico+",'"+dataVigenciaInicio+"','"+dataVigenciaFim+"')";
// ^ e aqui
para evitar esse problema e SQL Injection, use PreparedStatement.
Pessoal muito obrigado mesmo ta resolvido o problema… caramba até q enfim deu certo!
Agradeço ao “wbdsjunior” pela solução e atenção e também ao drsmachado pela atenção também!
E me desculpem porque sou novo no Fórum!
Mas muito, muitíssimo obrigado!
(OBS.: trabalho de conclusão de disciplina kkkkk)
É sempre assim, trabalhos de conclusão são sempre estressantes.
Só edita o tópico e coloca [resolvido] no título