我在数据库中有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
。 。对于每一列都是如此。请帮忙。
答案 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.