Column Wise从Database中检索值

时间:2017-09-20 17:47:56

标签: java jdbc

我在数据库中有a,b,c和许多列,其值如下:

a b c d e 
1 1 1 1 2 
2 2 3 4 1
3 3 3 2 4
4 4 4 5 7
5 5 5 3 8

我正在尝试按如下方式检索列值:

while(rs.next()){
        for(int 1=1;i<=rsMetaData.getColumnCount();i++){
        System.out.println(rs.getString(rsMetaData.getColumnName(i)));
        }

        }

我列入的输出是:

 1 1 1 1 2 
    2 2 3 4 1
    3 3 3 2 4
    4 4 4 5 7
    5 5 5 3 8

这是我正在排队。

但我希望我的代码能够检索列a的所有值,然后检索列b,依此类推每个列的存在。

预期产出:

a's value
1  
2 
3 
4 
5 
1(b's values)
2
3
4
5

。 。对于每一列都是如此。请帮忙。

2 个答案:

答案 0 :(得分:0)

您可能希望将循环更改为:

while (rs.next()) {
    for(int i=1;i<=rsMetaData.getColumnCount();i++) { 
        System.out.println(rs.getString(i)); 
    }
}

答案 1 :(得分:0)

这是两种不同的方法。我没有测试过这段代码,但这个想法是正确的。

  

方法一:分别查询每一列

for(int i=1;i<=rsMetaData.getColumnCount();i++){
    String sqlQuery = "SELECT " + rsMetaData.getColumnName(i) +" FROM Table";//run a query for each column
    //Query DB
    .
    .
    .
    while(rs.next())
    {
        System.out.println(rs.getString(rsMetaData.getColumnName(i)));//Print out specific column's data before moving to the next column.
    }           
}
  

方法二:将List保存到Map

//Create `Map` and `List`s to go in `Map`. 
Map<String, List<String>> columnHolder = new HashMap();
for(int 1=1;i<=rsMetaData.getColumnCount();i++){
    System.out.println(rs.getString(rsMetaData.getColumnName(i)));
    List<String> tempList = new ArrayList();
    columnHolder.put(rsMetaData.getColumnName(i), tempList);
}       

//Store data into `Map` according to column name.
while(rs.next())
{
    for(int i=1;i<=rsMetaData.getColumnCount();i++){
        System.out.println(rs.getString(rsMetaData.getColumnName(i)));
        List<String> list = columnHolder.get(rsMetaData.getColumnName(i));
        list.add(rs.getString(rsMetaData.getColumnName(i)));
    }
}
// Now you can do anything with the `Map`. For example: like print the data it holds.