试图将结果集值放入地图中
Trying to put the Result set Values inside a Map
我试图将结果集(数据库查询值)放入 LinkedHashMap>。
行的每次迭代。该值在放入 DBMap 时被覆盖。
<LinkedHashMap<String, String>> rowData = new LinkedHashMap<>();
<LinkedHashMap<Integer, LinkedHashMap<String, String>>> dbData = new LinkedHashMap<>();
while (rset.next()) {
for (int col = 1; col < countCol+1; col++) {
String colname =rset.getMetaData().getColumnName(col);
rowData.put(colname, rset.getString(col));
}
int rowV = rset.getRow();
dbData.put(rowV, rowData);
}
这段代码只为我提供了 dbData 映射中所有键的结果集最后一行的映射。
您将同一个 LinkedHashMap
实例(由 rowData
变量引用)多次放入外部 Map
。这就是最终数据库行的值覆盖所有先前值的原因。
您必须为 while
循环的每次迭代创建一个新的 LinkedHashMap
实例:
LinkedHashMap<Integer, LinkedHashMap<String, String>> dbData = new LinkedHashMap<>();
while (rset.next()) {
LinkedHashMap<String, String> rowData = new LinkedHashMap<>();
for (int col = 1; col < countCol+1; col++) {
String colname =rset.getMetaData().getColumnName(col);
rowData.put(colname, rset.getString(col));
}
int rowV = rset.getRow();
dbData.put(rowV, rowData);
}
简单:您只有 一个 rowData 映射 - 用行数据更新。
您必须为每一行创建一个新地图!
换句话说:您当前的代码创建了 一个 地图,每次 "row" 迭代都会更新该地图。最后,您将同一张地图放入外部地图。
我试图将结果集(数据库查询值)放入 LinkedHashMap>。
行的每次迭代。该值在放入 DBMap 时被覆盖。
<LinkedHashMap<String, String>> rowData = new LinkedHashMap<>();
<LinkedHashMap<Integer, LinkedHashMap<String, String>>> dbData = new LinkedHashMap<>();
while (rset.next()) {
for (int col = 1; col < countCol+1; col++) {
String colname =rset.getMetaData().getColumnName(col);
rowData.put(colname, rset.getString(col));
}
int rowV = rset.getRow();
dbData.put(rowV, rowData);
}
这段代码只为我提供了 dbData 映射中所有键的结果集最后一行的映射。
您将同一个 LinkedHashMap
实例(由 rowData
变量引用)多次放入外部 Map
。这就是最终数据库行的值覆盖所有先前值的原因。
您必须为 while
循环的每次迭代创建一个新的 LinkedHashMap
实例:
LinkedHashMap<Integer, LinkedHashMap<String, String>> dbData = new LinkedHashMap<>();
while (rset.next()) {
LinkedHashMap<String, String> rowData = new LinkedHashMap<>();
for (int col = 1; col < countCol+1; col++) {
String colname =rset.getMetaData().getColumnName(col);
rowData.put(colname, rset.getString(col));
}
int rowV = rset.getRow();
dbData.put(rowV, rowData);
}
简单:您只有 一个 rowData 映射 - 用行数据更新。
您必须为每一行创建一个新地图!
换句话说:您当前的代码创建了 一个 地图,每次 "row" 迭代都会更新该地图。最后,您将同一张地图放入外部地图。