Acho que não tem a ver com isso não, os métodos já estão sendo chamados no atualizabanco(), não é preciso colocar para quando clicar na tabela. Observe, eu tenho esse código para diminuir do meu banco o que eu adiciono na tabela, é quase a mesma coisa e funciona, esse que a gente está tentando não está funcionando.
public void consultaproduto() {
String sql = "Select * from estoque where id=?";
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, campoid.getText());
rs = pst.executeQuery();
while (rs.next()) {
int qtd = Integer.parseInt(rs.getString(3));
double soma = 0;
for (int i = 0; i < jTable1.getRowCount(); i++) {
int valorAux = (int) jTable1.getValueAt(i, 2);
soma += valorAux + 1;
}
if (campoqtd.getText() == rs.getString(3) + 1) {
JOptionPane.showMessageDialog(null, "Não temos esta quantidade em estoque, a quantidade do produto é: " + qtd, "Atenção!", JOptionPane.WARNING_MESSAGE);
} else {
if (soma <= qtd) {
adiciona();
String sql1 = "Update estoque set qtd=? where id=?";
try {
int qtd1 = Integer.parseInt(campoqtd.getText());
int subtracao = qtd - qtd1;
pst = conexao.prepareStatement(sql1);
pst.setString(1, Integer.toString(subtracao));
pst.setString(2, campoid.getText());
pst.executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
JOptionPane.showMessageDialog(null, "Não temos esta quantidade em estoque, a quantidade do produto é: " + qtd, "Atenção!", JOptionPane.WARNING_MESSAGE);
}
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao calcular Total Produtos: " + e.getMessage());
}
}
e o erro é sempre o mesmo java.lang.ArrayIndexOutOfBoundsException: -1
Isso daí é um catch. Por acaso este catch é o try-catch que você acessa o BD ou conecta ao BD? Mande o try-catch completo que ocorre este erro por gentileza.
nenhum dos 2, esse catch é de outro método onde eu chamo o atualizabanco(), esse método onde está dando erro, é o que remove a linha e faz a subtração, jogando o valor para uma textfield, estou chamando o atualizabanco(), nele pois quero que quando remova a linha, o valor adicionado volte para o banco.