Não Consigo dar UPDATE na minha tabela através do Java [RESOLVIDO]

4 respostas Resolvido
java-se
Arthur_William

Ola bom dia, estou tentando dar Update em uma coluna da minha tabela mas não consigo. Quero substituir toda uma coluna pelos valores de uma Jtable, ja consegui pegar os valores da JTable através de um FOR, porém quando vou inserir no baco ele da a seguinte mesagem de erro:

java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 2).

Segue o Código que fiz :

public void alterar (){
    
    try {
        
        String estoque = null ;
        String codigo = null ;
        
    for(int i=0; i<tabelaCaixa.getRowCount(); i++){
        
         codigo = tabelaCaixa.getValueAt(i, 0).toString();
         estoque = tabelaCaixa.getValueAt(i, 7).toString();
         
        System.out.println(codigo);
        System.out.println(estoque);
        
        
         String sql = "UPDATE produtos SET quantidade_pro=?, WHERE codigo_pro=?";
       
         pst = conexao.prepareStatement(sql); 
         pst.setString(4, ""+estoque+"");
         pst.setString(1, ""+codigo+"");
         pst.executeUpdate();
         
      
       
    }
   
        
        // System.out.println("Mesa: " +mesa + "\n" + "Pedido:" +pedido + "\n" + "Quantidade: "+quantidade+ "\n" + "Valor Unidade: "+valorUnidade);  
    } catch (SQLException ex) {
        Logger.getLogger(FrmCaixa.class.getName()).log(Level.SEVERE, null, ex);
    }
}

4 Respostas

Lucas_Camara

Os índices dos parâmetros estão errados, deveriam ser 1 e 2, e não 4 e 1. E essas aspas são desnecessárias, pode deixar só assim:

pst.setString(1, estoque); 
pst.setString(2, codigo);
Arthur_William

Agora ta dando um erro de Sintaxe :

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘WHERE codigo_pro=‘PRO0004’’ at line 1

Lucas_Camara
Solucao aceita

Acho que o seu update tem uma vírgula sobrando:

UPDATE produtos SET quantidade_pro=?, WHERE codigo_pro=?
                                    ^

antes do WHERE.

Arthur_William

Muito obrigado. Era só isso mesmo , as vezes a gente bate cabeça com uns erros besta, mas é pq deixa passar pelo tempo que ta com o olho no código. Vlw demais!

Criado 20 de agosto de 2020
Ultima resposta 20 de ago. de 2020
Respostas 4
Participantes 2