Statement selectStatement = connection.createStatement();
ResultSet selectResultSet = selectStatement.executeQuery(query);
logger.info("sql query " + selectStatement.toString());
ResultSetMetaData rsmd = selectResultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
String[] row = new String[columnsNumber];
int ctr = 0;
logger.info("Reading from database...");
while(selectResultSet.next())
{
for(int i=0;i<columnsNumber;i++){
row[i] = selectResultSet.getString(i+1);
}
System.out.println();
dataFromQuery.put(ctr++, row);
}
selectResultSet.close();
从 HashMap 读回时,它只打印最后一行 'n' 次。
最佳答案
您缺少的是 - row = new String[columnsNumber];
在 while 循环中,这实际上导致覆盖数组对象值并且您将相同的对象添加到 HashMap
.
...
while(selectResultSet.next()){
row = new String[columnsNumber];
for(int i=0;i<columnsNumber;i++){
row[i] = selectResultSet.getString(i+1);
}
System.out.println();
dataFromQuery.put(ctr++, row);
}
...
关于java - HashMap 被最后一个值覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047809/