从访问表中检索特定行

时间:2017-01-02 14:09:43

标签: java jdbc resultset

我已经浏览了这个论坛,并在网上搜索了我上述问题的解决方案,但找不到能指向正确方向的东西。如果这是重复,请原谅我。

我正在处理我的应用程序与MS Access 2016数据库交互的java项目。我的程序的一个功能是查询数据库中的特定记录,并在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 ....

问题是我只获得此记录中的第一个值(记录的第一列),并且记录/行中有更多可用数据。

可能是rs.next()方法正在执行此操作,如果是这样,我应该使用什么来获取此特定记录中的下一个值?

1 个答案:

答案 0 :(得分: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));
         }
     }
}