如何将总值变为double或vector

时间:2015-01-15 14:55:07

标签: java mysql netbeans

我希望将特定帐号的所有“金额”值合计为双精度数或向量数。由于我的数据库有相同帐号的许多交易,我无法弄清楚如何获得所有记录的总价值。我的代码给我的最后交易金额值不是所有的总和。感谢任何帮助

 ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
        while (rs5.next()) {
            Vector <Double> em = new Vector();
            em.add(rs5.getDouble("Amount"));

            Double [] myArray = em.toArray(new Double[0]);
            check2 = myArray[0];


        }

3 个答案:

答案 0 :(得分:2)

如果您只想要所有金额的总和,并且不关心个别金额,您可以直接从执行SQL查询中获取它:

SELECT SUM(Amount) FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'"

如果您要获取给定帐户的个别金额并自行计算金额,您可以迭代myArray数组或em向量并添加所有金额。如果选择此方法,请将em的初始化移到循环外。

答案 1 :(得分:0)

while循环的每次迭代,您都在重置Vector<Double> em。这意味着只有最新的元素实际上会在循环中结束。通过将Vector的声明移到循环之外来解决这个问题

Vector <Double> em = new Vector();
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
    while (rs5.next()) {       
         em.add(rs5.getDouble("Amount"));
    }
Double [] myArray = new Double[em.size()]; 
myArray = em.ToArray(myArray);
//Now do stuff with all the entries

如果你只对这个总和感兴趣,你可以像Eran建议的那样将总和移动到查询本身,或者在循环之外声明一个sum变量,并像每个循环一样更新它:

Double runningSum = 0.0;
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
    while (rs5.next()) {
        runningSum += rs5.getDouble("Amount");
    }

答案 2 :(得分:0)

以下查询将返回帐号和相应的金额总和

Select accountnumber,sum(amount) from Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%' group by accountnumber

此外,如果您不想修改查询,您可以使用地图,其中accountnumer是关键,价值将是金额。如果您已在地图中添加帐号,则将金额添加到当前金额值,否则将新帐户添加到地图