【问题标题】:Retrieve specific row from access table从访问表中检索特定行
【发布时间】:2017-01-02 14:09:43
【问题描述】:

我浏览了这个论坛并在网上搜索了解决我上述问题的方法,但找不到可以为我指明正确方向的东西。如有重复请见谅。

我正在开发一个 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 ....

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

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

【问题讨论】:

  • obj=rs.getObject(i+1); 始终为obj=rs.getObject(1);。您正在尝试获取结果的每一列。

标签: java jdbc resultset


【解决方案1】:

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));
         }
     }
}

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2020-10-12
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多