dúvida para atualizar campo com soma (mysql)

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.