试图将结果集值放入地图中

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" 迭代都会更新该地图。最后,您将同一张地图放入外部地图。