2017-09-20 50 views
0

值我有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

什麼'list'你怎麼打印輸出? – nullpointer

+0

忘記列表,因爲我將這些數據從列表轉儲到xml ..但是當您打印語句rs.getString(rsMetaData.getColumnName(i))時,您將只獲得行明智的值,但我想列明智 – user8643408

+0

什麼是rsMetaData '在你的代碼中? – nullpointer

回答

0

您可能希望你的循環更改爲:

while (rs.next()) { 
    for(int i=1;i<=rsMetaData.getColumnCount();i++) { 
     System.out.println(rs.getString(i)); 
    } 
} 
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. 
    }   
} 

方法二:保存ListMap

//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.