dúvida para atualizar campo com soma (mysql)

6 respostas
marcusluiz83

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
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();

    }
TestaSaldo
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();

O valor da venda é registrado corretamente, mas o saldo final fica como nulo no banco. O que estou fazendo de errado?

Obrigado pela ajuda!

6 Respostas

WendersonLP
"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.

marcusluiz83

Olá!

Fiz a correção que você sugeriu, mas o campo continua NULL no banco.

Obrigado assim mesmo!

romarcio

Só faz assim: "UPDATE saldo SET saldoFinal = saldo - venda WHERE ndc = 4"

marcusluiz83

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:
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();      
        

    }

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!

Hebert_Coelho

Qual o motivo de vc estar dando System.exit(1) antes de atualizar saldo? O.o

marcusluiz83

Rsrsrsrs. Eu modifiquei o código, acrescentei este método e esqueci de tirar a saída.

Criado 18 de julho de 2010
Ultima resposta 19 de jul. de 2010
Respostas 6
Participantes 4