Java 尝试将结果集值放入映射中

Java 尝试将结果集值放入映射中,java,sql,resultset,sqlresultsetmapping,Java,Sql,Resultset,Sqlresultsetmapping,我试图将结果集(DB查询值)放入LinkedHashMap>中 行的每次迭代。该值在放入DBMap时被重写 <LinkedHashMap<String, String>> rowData = new LinkedHashMap<>(); <LinkedHashMap<Integer, LinkedHashMap<String, String>>> dbData = new LinkedHashMap<>(); w

我试图将结果集(DB查询值)放入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);
}
rowData=newlinkedhashmap();
dbData=newlinkedhashmap();
while(rset.next()){
for(int col=1;col

此代码仅为dbData map中的所有键提供结果集最后一行的映射。

您正在将相同的
LinkedHashMap
实例(由
rowData
变量引用)多次放入外部
映射中。这就是最终DB行的值覆盖以前所有值的原因

您必须为
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);
}
LinkedHashMap dbData=new LinkedHashMap();
while(rset.next()){
LinkedHashMap行数据=新LinkedHashMap();
for(int col=1;col
简单:您只有一个行数据映射-可以使用行数据进行更新

您必须为每一行创建一个新的映射


换句话说:您当前的代码创建一个映射,该映射将在每次“行”迭代中更新。最后,你把同样的地图放进你的外部地图

我刚刚发布了所需的代码,它将在这里回答我的问题@Robbycornelisse请注意,您发布的代码在前两行中有额外的
。我假设这是一个打字错误,因为根据你的问题,我假设你的代码通过了编译。这是复制粘贴错误:不知道谁给了你否决票。你给出代码示例,我给出了解释。为什么?严肃地说:一个想要处理数据库的人应该能够在给出解释的2分钟内编写代码。谢谢!成功了。我刚刚在结果集循环中声明了rowdata映射。所以它实例化了每个迭代