【发布时间】:2017-10-23 01:53:33
【问题描述】:
我的查询可以从表中返回动态列数。我需要遍历每一列并存储该特定列的所有行的数据并将它们存储在一个列表中。我需要对查询返回的所有列执行此操作。 同样,查询可以返回动态列。 以最少的代码复杂性实现上述场景的最佳方法是什么。 例如:
------------------
Employee Table
------------------
Name | Age | Roll
------------------
A | 21 | 1
------------------
B | 22 | 2
我需要首先遍历 Name 列并将 Name 存储为键,并将 A 和 B 作为该映射的值,然后遍历 Age 列并将 Age 作为键,将 21,22 作为该键的值,依此类推.. .
我想以最简单的方式实现这一目标。
这是我开发的代码:
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
for (int j = 1; j <= columnsNumber; j++)
{
String Colkey = rsmd.getColumnName(j);
List<String> colValueList = new ArrayList<String>();
while (rs.next())
{
colValueList.add(rs.getString(Colkey));
}
rs = pstmt.executeQuery();
map.put(Colkey,colValueList);
}
提前谢谢你。
【问题讨论】:
-
你试过自己做吗?包含有问题的代码
-
Map<Sting, List<String>>,第一个字符串是列名,``List`保存了列的信息 -
我想为具有大量数据的表实现此功能。所以我对复杂性感到困扰。
-
@ Lukasz_Plawny - 请找到添加的代码。
-
循环应该被交换。外部循环使用
rs.next(),但内部循环遍历列。使用MultiValueMap或Map<String, List<String>>为列名添加值
标签: java list hashmap iteration resultset