我的查询可以返回表中的动态列数。我需要遍历每一列,存储该特定列的所有行的数据,并将它们存储在一个列表中。我需要对查询返回的所有列执行此操作。同样,查询可以返回动态列。在代码复杂度最低的情况下,实现上述方案的最佳方式是什么?例如:
------------------
Employee Table
------------------
Name | Age | Roll
------------------
A | 21 | 1
------------------
B | 22 | 2我需要首先迭代Name列,并将Name存储为key,将A和B存储为map的值,然后迭代Age列,将Age存储为key,将21,22存储为key的值,依此类推……
我想用最小的复杂度来实现这一点。
下面是我开发的代码:
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);
}提前谢谢你。
发布于 2017-05-23 16:36:02
这里有一种方法:
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
for (int j = 1; j <= columnsNumber; j++) {
String Colkey = rsmd.getColumnName(j);
map.put(Colkey, new ArrayList<String>());
}
while (rs.next()) {
for (Map.Entry<String,List<String>> e: map.entrySet) {
String Colkey = e.getKey();
List<String> list = e.getValue();
list.add(rs.getString(Colkey));
}
}发布于 2017-05-23 16:55:47
这很简单。请在存储到映射值时遵循POJO概念。1.首先获取表的逻辑结构并创建Pojo类,如下所示:
public class Employee {
String name;
int age;
int roll;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getRoll() {
return roll;
}
public void setRoll(int roll) {
this.roll = roll;
}
}现在是在HashMap中插入的逻辑。
rs = pstmt.executeQuery();
HashMap map=new HashMap<String,Employee>();
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())
{
Employee emp=new Employee();
emp.setAge(rs.getInt("AGE"));
emp.setAge(rs.getInt("ROLL"));
emp.setName(rs.getString("NAME"));
map.put(emp.getName(), emp);
}
rs = pstmt.executeQuery();
}https://stackoverflow.com/questions/44129256
复制相似问题