Boa noite, pessoal!
Estou com uma dúvida para atualizar um campo de um banco de dados mysql com quatro campos:
ndc
saldo
venda
saldoFinal
O campo saldoFinal é resultado de saldo-venda. Como faço para atualizar este campo. Estou utilizando estes métodos:
VendaDAO[code]public void confirmaVenda(DadosDaVenda venda) throws SQLException {
String sql = “update saldo set venda=? where ndc=4”;
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setDouble(1, venda.getVenda());
stmt.execute();
stmt.close();
}
public void atualizaSaldo(DadosDaVenda novoSaldo) throws SQLException {
String sql = "UPDATE saldo SET saldoFinal = (SELECT SUM(saldo - venda) FROM saldo WHERE ndc=4) FROM saldo";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setDouble(1, novoSaldo.getSaldoFinal());
stmt.execute();
stmt.close();
}[/code]
TestaSaldo[code] try {
// TODO add your handling code here:
DadosDaVenda dv1 = new DadosDaVenda();
dv1.setVenda(Double.parseDouble(venda.getText()));
VendaDAO dao = new VendaDAO();
dao.confirmaVenda(dv1);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “ERRO”);
}
JOptionPane.showMessageDialog(null, “OK”);
System.exit(1);
DadosDaVenda ns = new DadosDaVenda();
ns.getSaldoFinal();[/code]
O valor da venda é registrado corretamente, mas o saldo final fica como nulo no banco. O que estou fazendo de errado?
Obrigado pela ajuda!
"UPDATE saldo SET saldoFinal = (SELECT SUM(saldo - venda) FROM saldo WHERE ndc=4) FROM saldo"
Vejá que você depois do parênteses colocou “FROM saldo”, sendo que num “UPDATE” não é utilizado a
cláusula “FROM tabela”
"UPDATE saldo SET saldoFinal = (SELECT SUM(saldo - venda) FROM saldo WHERE ndc=4)"
Correção.
Acho que deva ter sido este o seu erro.
Olá!
Fiz a correção que você sugeriu, mas o campo continua NULL no banco.
Obrigado assim mesmo!
Só faz assim: "UPDATE saldo SET saldoFinal = saldo - venda WHERE ndc = 4"
Galera,
Acho que meu erro está na chamada do método atualizaSaldo(). Ao clicar no botão Enviar venda, o método confirmaVenda() funciona normal. Não estou sabendo como inserir estes dois métodos no botão:
[code] private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
// TODO add your handling code here:
DadosDaVenda dv1 = new DadosDaVenda();
dv1.setVenda(Double.parseDouble(venda.getText()));
VendaDAO dao = new VendaDAO();
dao.confirmaVenda(dv1);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "ERRO");
}
JOptionPane.showMessageDialog(null, "OK");
System.exit(1);
atualizaSaldo();
}[/code]
Sou iniciante e esta minha dúvida deve ser bem imbecil. Deste jeito que fiz, a sugestão para o erro do Netbeans é criar o método nesta classe. Este método está na classe VendaDAO no mesmo pacote desta classe TestaSaldo.
Como corrijo? Obrigado pela ajuda!
Qual o motivo de vc estar dando System.exit(1) antes de atualizar saldo? O.o
Rsrsrsrs. Eu modifiquei o código, acrescentei este método e esqueci de tirar a saída.