Erro em PreparedStatement

5 respostas Resolvido
java
Dalton_Gomes

Meu programa java esta dando um erro quando texto executar um codigo tipo=“Insert into” no java, eu ja o teste no mysql workbench e o codigo sql executa perfeitamente, mas quando faço o mesmo no java ele da esse erro: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;

Conexao c1 = new Conexao();

String sql1=INSERT INTO acervo (Autor,Titulo,Editora,Edº,Ano,Codigo,Lado) VALUES (?,?,?,?,?,?,?);

if(txtTitulo.getText().equalsIgnoreCase(Digite o titulo do livro) || txtTitulo.getText().isEmpty()

|| txtCodigo.getText().equalsIgnoreCase(Digite o codigo do livro) || txtCodigo.getText().isEmpty()

|| txtAutor.getText().equalsIgnoreCase(Digite o autor do livro) || txtAutor.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Preencha os campos corretamente");
        
    }
    
    else{
    int x = Integer.parseInt(txtCodigo.getText());
    int y = Integer.parseInt(lblValor.getText());
    
    for(int i=x;i<=x+y-1;i++){
    
    txtCodigo.setText(Integer.toString(i));
    int ano = Integer.parseInt(txtAno.getText());
    
    try{
        Connection con = c1.pegarConexao();
        PreparedStatement stmt = con.prepareStatement(sql1);
        stmt.setString(1,txtAutor.getText());
        stmt.setString(2,txtTitulo.getText());
        stmt.setString(3,txtEditora.getText());
        stmt.setString(4,txtEdição.getText());
        stmt.setInt(5,ano);
        stmt.setString(6,txtCodigo.getText());
        stmt.setString(7,(String) opLado.getSelectedItem());
        stmt.executeUpdate();
    }catch(Exception ex){
        System.out.println(ex);
    }
    }
   JOptionPane.showMessageDialog(null,"Registrado");

    
    }

5 Respostas

Jothar_Aleksander

Na mensagem de erro não apareceu mais nada, como por exemplo:

[…] check the manual that corresponds to your MySQL server version for the right syntax to use near […]

Dalton_Gomes

check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘º,Ano,Codigo,Lado) VALUES (‘Machado’,‘Dom Casmurro’,‘São Paulo’,‘2’,2009,‘2’,‘D’)’ at line 1

andersonandradeti

Mude Ed° para Ed sem esse carácter especial

Jothar_Aleksander
Solucao aceita

Eu já desconfiava disso, pedi o resto da mensagem de erro para ver se ele conseguiria descobrir analisando a mensagem:

“[…] verifique o manual que corresponde à sua versão do servidor MariaDB para a sintaxe correta a ser usada próximo a […]”.

Dalton_Gomes

Cara eu não acredito que era so isso kkkk
Tu é meu heroi eu tenho que apresentar esse programa pra amanhã eu ja tava pensando em refazer essa parte do programa pensando que era isso
Obrigado cara

Criado 6 de agosto de 2019
Ultima resposta 6 de ago. de 2019
Respostas 5
Participantes 3