gpt4 book ai didi

java - 将 ResultSet 值传输到 HashMap 然后添加它们

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:38 24 4
gpt4 key购买 nike

我想将 ResultSet 值传输到 HashMap 然后添加它们,所以我最初执行了以下代码:

PreparedStatement pstmt=null;       
ResultSet rs = null;
String query="SELECT record_id, SUM(ROUND(amtsourcedr, 2)) AS debit, SUM(ROUND(amtsourcecr, 2)) AS credit " +
"FROM adempiere.fact_acct " +
"GROUP BY record_id " +
"ORDER BY record_id ASC";

try
{

pstmt = DB.prepareStatement(query, null);
rs = pstmt.executeQuery();

while (rs.next())
{

int id = rs.getInt("record_id");
BigDecimal sourceDr = rs.getBigDecimal("debit");
BigDecimal sourceCr = rs.getBigDecimal("credit");
System.out.println(id);
System.out.println(sourceDr);
System.out.println(sourceCr);

MCUS_Exam exam = new MCUS_Exam(getCtx(), 0, null);
exam.setCUS_Record_ID(id);
exam.setCUS_AmtSourceDr(sourceDr);
exam.setCUS_AmtSourceCr(sourceCr);
exam.save();
}

是否可以通过java使用hashmap来对查询中找到的结果进行加法和舍入?如果是,那么我该如何继续做呢?

编辑:GROUP BY 实际上是我在 java 中复制时遇到困难的一个。

原表如下:

    record_id    amountdr       amountcr
1000000 0 213.7544
1000000 0 270.00
1000000 483.7544 0
1000001 0 2250.6677
1000001 0 400.5050
1000001 0 12867.75
1000001 15518.9327 0
1000002 0 27000.6543
1000002 27000.6543 0

执行我给出的代码会将其添加到另一个表中:

    record_id    amountdr       amountcr
1000000 483.75 483.75
1000001 15518.92 15518.93
1000002 27000.65 27000.65

最佳答案

您当然可以做到 - 您可以在数据库上执行的任何操作也可以在中间层上完成。我要问的问题是:对于此计算,哪一个是更好的选择?如果查询返回大量数据,我认为最好让数据库服务器来完成这项工作。仅仅为了添加和舍入而将大型数据集移动到中间层没有什么意义。

我的直觉是数据库非常适合这种计算。我看不出您有任何理由不允许它这样做。

但是,如果您必须的话,它可能如下所示:

Map<String, Double> rs = new HashMap<String, Double>();
// How will you duplicate the GROUP BY?
double sum = 0.0;
for (String key : rs.keySet()) {
sum += rs.get(key);
}
// Rounding is a display issue; I'd do it elsewhere

当你想到它时,Map 已经完成了 GROUP BY:键必须是唯一的。当您从 ResultSet 映射到 Map 时,您必须检查 Map 中是否已存在某个键。如果没有,则将新键及其值添加到 Map 中;如果是,则获取现有值,将当前 ResultSet 值添加到其中,然后将结果放回到该键的 Map 中。

关于java - 将 ResultSet 值传输到 HashMap 然后添加它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com