Erro java.lang.arrayindexoutofboundsexception: -1 ao salvar dados no banco

2 respostas
javaerror
A

Boa noite pessoal

o meu problema é o seguinte, tenho uma tela de venda que eu coloco o cliente e quando eu clico no botão produto ele abre a tela de produtos e já cria uma venda na minha tabela de pedido do banco de dados, até ai tudo bem se eu olha no banco a venda já foi iniciada com o id do pedido. o problema e que quando eu coloco os produtos na tabela de venda e mando salvar no banco a venda esta dando esse erro java.lang.arrayindexoutofboundsexception: -1 e não grava nada no banco.

um amigo meu me disse que tenho que fazer um WHILE para ir adicionando os produtos no banco, mas não consegui fazer esse WHILE até agora.

se alguém puder me ajudar eu fico muito agradecido.

esse é o meu codigo

public void ItensPedido(ItensPedidoModel itens) {

    StringBuilder sql = new StringBuilder();
    Connection conexao;
    PreparedStatement pst;
    int coluna = tbl_venda.getSelectedRow();

    try {

        sql.append("INSERT INTO itens_pedido (id, id_pedido, produto, quantidade, valor_unitario, valor_total, desconto) ");
        sql.append("VALUES (?, ?, ?, ?, ?, ?, ?) ");

        conexao = ModuloConexao.conector();
        pst = conexao.prepareStatement(sql.toString());

        itens.setId_pedido(Integer.parseInt(txt_id_venda.getText()));
        itens.setProduto(Integer.parseInt(tbl_venda.getValueAt(coluna, 1).toString()));
        itens.setQuantidade(Integer.parseInt(tbl_venda.getValueAt(coluna, 0).toString()));
        itens.setValor_unitario(Double.parseDouble(tbl_venda.getValueAt(coluna, 2).toString()));
        itens.setValor_total(Double.parseDouble(tbl_venda.getValueAt(coluna, 3).toString()));

        pst.executeQuery();

        JOptionPane.showMessageDialog(null, "Venda efetuada com sucesso");
    } catch (Exception erro) {
        JOptionPane.showMessageDialog(null, "Erro ao realizar a venda. " + "\n" + erro);
    }
}

2 Respostas

E

Oi aeciocleysson!

A Exception ArrayIndexOutofBounds ocorre quando tentamos acessar uma posição que não existe. É como o próprio nome diz: “índice do array fora dos limites”. Em algum lugar tu está acessando alguma posição que não existe em algum array. Pelo que vi no teu código, provavelmente o problema está na chamada do método getValueAt.

P

Onde está o set destes parâmetros?

Qual o valor de coluna quando executas (quase que aposto que é -1)

Criado 27 de dezembro de 2017
Ultima resposta 29 de dez. de 2017
Respostas 2
Participantes 3