2017-01-02 64 views
1

我已經瀏覽了此論壇,並在網上搜索瞭解決上述問題的方法,但無法找到指向正確方向的內容。如果這是重複,請原諒我。從訪問表中檢索特定行

我正在開發一個java項目,我的應用程序與MS Access 2016數據庫交互。我的程序的功能之一是查詢數據庫的特定記錄,並顯示該記錄的數據在gui中。這裏是我的代碼檢索數據:

int i = 0; 
String q = "select * from QueryData where id=123456"; 
try { 
    pstmnt=conn.prepareStatement(q); 
    Object obj ; 
    rs = pstmnt.executeQuery(); 
    while (rs.next()) { 
     obj=rs.getObject(i+1); 
     data.add(obj); //where data is a List object i++; 
    } 
} catch .... 

問題是我只得到該記錄的第一個值(記錄的第1列),並有記錄/行中提供更多的數據。

難道是這樣做的rs.next()方法,如果是這樣,我應該用什麼來獲得這個特定記錄中的下一個值?

+0

'OBJ = rs.getObject(I + 1);'是'總是OBJ = rs.getObject (1);'。您正試圖獲得結果的每一列。 – AxelH

回答

2

ResultSet#next()遍歷結果集中的(在這種情況下,它只是一行)。如果你不知道結果集的結構前期,可以動態地從一個ResultSetMetaData對象推斷出這一點:

int i=0; 
String q="select * from QueryData where id=123456"; 
try (PreparedStatement pstmnt = conn.prepareStatement(q); 
    ResultSet rs = pstmnt.executeQuery()) { 

    ResultSetMetaData rsmd = rs.getMetaData(); 

    // Assume it's just one row. 
    // If there's more than one, you need a while loop 
    if (rs.next()) { 
     for (int i = 0; i < rsmd.getColumnCount(); ++i) { 
      data.add(rs.getObject(i + 1)); 
     } 
    } 
} 
+1

萬分感謝。 – user3452354