(PreparedStatement) execute não faz inserção mais de uma vez

Eu tenho um for que percorre uma list e a cada laço ele faz uma inserção no banco, o problema é que a primeira inserção ele faz de boa, mas depois ele não da mais o execute, simplesmente não executa as inserções seguintes e também não retorna nenhum erro.
########################################################################################

Na teoria não tem problema nisso, já na prática, só vc e Deus sabem o código que foi escrito.

Posta código…Deve ser parâmetro do for…
Veja:

for(int i=0; i<jTable1.getRowCount(); i++){ //conta linhas da tabela
            inseredados.setSetor((String) jTable1.getValueAt(i, 0));

                   StmDesc(inseredados); //Assim correto

           }  //Dentro do For
                   StmDesc(inseredados);//Assim não

Acho que é mais ou menos isso, dá uma olhada…

Achei ter postado o código, mas acabei colando um monte de “#” sem querer.
A seguir o código do insert:

        public void setarProdutos(ModeloVenda1 mV1) {
            
            conexao.conectar();
            
            try {
                
                PreparedStatement pst = conexao.con.prepareStatement("INSERT INTO venda_pro (id, id_produto, quantidade) SELECT MAX(id), ?, ? FROM venda_info");
                pst.setInt(1, Integer.parseInt(mV1.getId_produto()));
                pst.setString(2, mV1.getQuantidade());
                pst.execute();
                
            } catch(SQLException ex) {
                
                a.setTitle("ERRO");
                a.setHeaderText("Houve um erro ao setarProduto.\nERRO: " + ex);
                a.show();
                
            }
            
            conexao.desconectar();
            
        }

E o código que chama o método:

            for(Vender v : dVender){
                
                mV1.setId_produto(v.getId());
                mV1.setQuantidade(v.getQuantidade());
                controleV.setarProdutos(mV1);
                
            }

experimenta usar executeUpdate() q é o recomendado e v se resolve.

Já tentei usar o executeUpdate(), mas não funciona, já ativei e desativei o commit e nada, já mudei a string sql, tentei passar os atributos concatenados direto na string. Eu já vi tudo que tinha na internet e não consigo resolver. O que me intriga é que está tudo organizado e o código está todo correto, mas de alguma forma ele só passa pelo execute uma única vez. Eu coloquei um System.out.println(“TESTE”); antes e depois do .execute(), a primeira vez ele imprime os dois, já as próximas repetições ele só imprime o que vem primeiro, o que vem depois não imprime. Isso significa que o .execute não está rodando, mas o foda é que não dá erro.

A list tem 3 itens.

Acrescentei a seguinte linha para ver o que estava acontecendo:

            System.out.println("TESTE - 1");
            pst.execute();
            System.out.println("TESTE - 2");

A saída deveria ser assim:
TESTE - 1
TESTE - 2
TESTE - 1
TESTE - 2
TESTE - 1
TESTE - 2

Mas sai assim:

fgdffd

Ou seja, depois de passar pelo .execute() pela primeira vez ele simplesmente não passa mais por ele.

então o problema deve estar na lógica do seu código (n na pequena parte q vc postou), basicamente deveria dar erro, não dando, está tudo ocorrendo corretamente, oq quer dizer q sua lógica ta errada.

Coisa do capeta isso ai, cara.

O problema era na tabela. Eu estava inserindo esses dados em uma tabela de referência, ela tinha que ter o último id da tabela principal. O erro era que o id estava como primary key, ou seja, toda vez que ele tentava inserir o mesmo id, simplesmente não permitia.