Java, não consigo gravar os dados em MySql [RESOLVIDO]

Olá bom dia, estou com um problema pra gravar meus dados no banco de dados SQL. Estou com uma JTable, onde possuo uma seria de dados e criei um FOR pra percorrer essa tabela. O for está funcionando perfeitamente, fiz um teste mostrando o conteúdo da variável em um System.out e ele está pegando normalmente. O problema ta sendo na hora da inserção no banco, ele aparece a seguinte mensagem de erro:
java.sql.SQLException: Parameter index out of range (0 < 1 ).
Segue o método que estou utilizando
public void adicionar() {

    try { 
        String codigo ;
          String tipo_prod ;
            String descricao ;
              String valor  ;
                String quantidade ;
                  String total ;
     
    for(int i=0; i<tabelaCaixa.getRowCount(); i++){
 
        codigo = tabelaCaixa.getValueAt(i, 0).toString();
        tipo_prod = tabelaCaixa.getValueAt(i, 1).toString();
        descricao = tabelaCaixa.getValueAt(i, 2).toString();
        valor = tabelaCaixa.getValueAt(i, 3).toString();
        quantidade = tabelaCaixa.getValueAt(i, 4).toString();
        total = tabelaCaixa.getValueAt(i, 5).toString();
        
   
         String sql = "INSERT INTO  produtos_vendidos (codigo,tipo_prod,descricao,valor,quantidade,total) VALUES ("+codigo+","+tipo_prod+","+descricao+","+valor+","+quantidade+","+total+")";
         pst = conexao.prepareStatement(sql); 
         
         pst.setString(0, codigo);
         pst.setString(1, tipo_prod);
         pst.setString(2, descricao);
         pst.setString(3, valor);
         pst.setString(4, quantidade);
         pst.setString(5, total);
         
         pst.execute();

  
        System.out.println(descricao);
       
    }
   
        

    } catch (SQLException ex) {
        Logger.getLogger(FrmCaixa.class.getName()).log(Level.SEVERE, null, ex);
    }
         
}

Então cara, isso aqui é tipo uma pegadinha, invés de começar com 0 você começa com 1.

Só uma dica, arruma sua identação, se possível cria uma classe bean do seu produto e pesquisa por um padrão de projeto chamado DAO, tua vida vai melhorar demais !
:blush:

2 curtidas

Conseguiu aqui mano, tive que por a Query como ‘?’, e a inserção do statemet com string deve ser feita dessa forma, com 200 apas . Java sendo Java . Vlw Galera

String sql = “INSERT INTO produtos_vendidos (codigo,tipo_prod,descricao,valor,quantidade,total) VALUES (?,?,?,?,?,?)”;

         pst = conexao.prepareStatement(sql); 
         
         pst.setString(1, ""+codigo+"");
         pst.setString(2, ""+tipo_prod+"");
         pst.setString(3, ""+descricao+"");
         pst.setString(4, ""+valor+"");
         pst.setString(5, ""+quantidade+"");
         pst.setString(6, ""+total+"");
         
         pst.execute();

Cara se você quiser pode usar setDouble, setInt e por aí vai. Fica bem melhor do que ficar passando tudd para String. Eu não vi que tava faltando o ‘?’ por que dei um scroll na página e vi o 0 no lugar do 1 rsrs

1 curtida