JDBC ResultSet 数据到 HashMap
JDBC ResultSet Data to HashMap
我无法将 ResultSet 中的数据设置到 HashMap。
我的查询返回 4 条记录,但 HashMap 只保存最后 2 条记录。但是,在循环中我能够打印 4 条记录数据。
有人可以帮忙吗?
这是我的代码:
workOrderMap=new HashMap<String, Integer>();
Statement statement = serviceconnection.createStatement();
ResultSet rs = statement.executeQuery("SELECT OPERATION,WORKORDERID FROM History WHERE OPERATION='CREATE'OR OPERATION='UPDATE'");
workOrderMap=new HashMap<String, Integer>();
while (rs.next()) {
workOrderMap.put(rs.getString("OPERATION"), rs.getInt("WORKORDERID"));
System.out.println(rs.getString("OPERATION")); // loops 4 times
}
System.out.println("List of Workorder id's" + workOrderMap.size()); // prints 2
只有 2 个不同的值从 rs.getString("OPERATION")
返回。
这不足为奇,考虑到您的 WHERE
子句只允许有 2 个值:
WHERE OPERATION='CREATE' OR OPERATION='UPDATE'
在 Map
中,键是唯一的,因此使用 相同的 键值调用 put()
将 overwrite 之前的值。
将行集转换为 POJO 时,我更喜欢创建一个 List<Map<String, Object>>
- 列表的每个元素都是一行,关联映射中的每个条目都是列名及其值。
仅供参考,您的 WHERE
子句可以更优雅地写为:
WHERE OPERATION IN ('CREATE', 'UPDATE')
由于键相同,您将在 hashmap 中看到只有 2 个值。
例子
Map<String,Integer> workOrderMap=new HashMap<String, Integer>();
workOrderMap.put("S", 1);
workOrderMap.put("S", 1);
workOrderMap.put("S2", 1);
System.out.println(workOrderMap.size());
输出:2
我无法将 ResultSet 中的数据设置到 HashMap。
我的查询返回 4 条记录,但 HashMap 只保存最后 2 条记录。但是,在循环中我能够打印 4 条记录数据。 有人可以帮忙吗?
这是我的代码:
workOrderMap=new HashMap<String, Integer>();
Statement statement = serviceconnection.createStatement();
ResultSet rs = statement.executeQuery("SELECT OPERATION,WORKORDERID FROM History WHERE OPERATION='CREATE'OR OPERATION='UPDATE'");
workOrderMap=new HashMap<String, Integer>();
while (rs.next()) {
workOrderMap.put(rs.getString("OPERATION"), rs.getInt("WORKORDERID"));
System.out.println(rs.getString("OPERATION")); // loops 4 times
}
System.out.println("List of Workorder id's" + workOrderMap.size()); // prints 2
只有 2 个不同的值从 rs.getString("OPERATION")
返回。
这不足为奇,考虑到您的 WHERE
子句只允许有 2 个值:
WHERE OPERATION='CREATE' OR OPERATION='UPDATE'
在 Map
中,键是唯一的,因此使用 相同的 键值调用 put()
将 overwrite 之前的值。
将行集转换为 POJO 时,我更喜欢创建一个 List<Map<String, Object>>
- 列表的每个元素都是一行,关联映射中的每个条目都是列名及其值。
仅供参考,您的 WHERE
子句可以更优雅地写为:
WHERE OPERATION IN ('CREATE', 'UPDATE')
由于键相同,您将在 hashmap 中看到只有 2 个值。
例子
Map<String,Integer> workOrderMap=new HashMap<String, Integer>();
workOrderMap.put("S", 1);
workOrderMap.put("S", 1);
workOrderMap.put("S2", 1);
System.out.println(workOrderMap.size());
输出:2