首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历动态结果集

问遍历动态结果集
EN

Stack Overflow用户
提问于 2017-05-23 16:10:32
回答 2查看 1.8K关注 0票数 0

我的查询可以返回表中的动态列数。我需要遍历每一列,存储该特定列的所有行的数据,并将它们存储在一个列表中。我需要对查询返回的所有列执行此操作。同样,查询可以返回动态列。在代码复杂度最低的情况下,实现上述方案的最佳方式是什么?例如:

代码语言:javascript
复制
------------------
Employee Table
------------------
Name | Age | Roll
------------------
A    | 21  | 1
------------------
B    | 22  | 2

我需要首先迭代Name列,并将Name存储为key,将A和B存储为map的值,然后迭代Age列,将Age存储为key,将21,22存储为key的值,依此类推……

我想用最小的复杂度来实现这一点。

下面是我开发的代码:

代码语言:javascript
复制
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);
                }

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2017-05-23 16:36:02

这里有一种方法:

代码语言:javascript
复制
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));
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-05-23 16:55:47

这很简单。请在存储到映射值时遵循POJO概念。1.首先获取表的逻辑结构并创建Pojo类,如下所示:

代码语言:javascript
复制
    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中插入的逻辑。

代码语言:javascript
复制
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();
                  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44129256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档