Não consigo retornar a soma de uma query (Java)

public List somarCaixa(){

    Connection conn = Conexao.abrirConexao();
    RegistroCaixa r = new RegistroCaixa();
   
   List<RegistroCaixa> registros = new ArrayList<>();
   try {
       String sql = "select sum(valor) as valor_Total from fluxodecaixa";
       PreparedStatement pstm = conn.prepareStatement(sql);
       ResultSet rs = pstm.executeQuery(sql);
       
       while(rs.next()){ 
       
       r.setTotal(rs.getDouble("valor_Total"));  
       registros.add(r);
       }

   } catch (SQLException e) {
       JOptionPane.showMessageDialog(null, "Erro: "+e);
   }
   return registros;

}

Esse é o código. Existe algo de errado?
RegistroCaixa registrador = new RegistroCaixa();
TotalCaixa caixa = new TotalCaixa();
lblCaixa.setText(String.valueOf(registrador.getTotal()));
lblCaixa.setForeground(Color.green);
caixa.somarCaixa();

E esse é o código definido no construtor na parte principal do programa.

Simplesmente o retorno é 0.0 da soma na coluna da minha tabela onde indiquei! O que poderia ser?

Essa linha precisa estar dentro do while

O teu problema não tem nada a ver com soma de uma query. É um problema básico de orientação a objectos. Estás a criar duas instâncias diferentes de RegistroCaixa, uma onde atribuis o valor da soma e outra que não atribuis nada, mas les o valor (que é zero, já que não foi atribuido)

1 curtida

Não precisa, é uma soma, a query só devolve um resultado. Nem sequer deveria devolver uma lista, mas sim um único objecto. Nem precisava de um while, apenas um if.

1 curtida

É verdade
Falta de atenção de minha parte
:grinning:

1 curtida

Obrigado! Realmente foi por falta de atenção, consegui resolver! Obrigado :slight_smile: