Java JDBC:当查询返回单行时,是否需要循环ResultSet?

时间:2018-04-06 10:29:01

标签: java jdbc

我的sql查询只返回一行。在查询时,我是否需要遵循通常的while(rs.next) {...}模式,或者我可以这样做:

...
rs.next();
int id  = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
...

而不是:

...
      while(rs.next()){
         //Retrieve by column name
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
      }
...

2 个答案:

答案 0 :(得分:4)

不是你不必每次都循环,因为rs.next()的调用已经将指针从null设置为第一个可用行,并且返回时是否有条目。< / p>

仍然有必要检查是否有东西被退回:

if(rs.next())
{
    // process resultset
}else
{
    // do something when no data arrived
}

答案 1 :(得分:0)

如果您只对第一个结果感兴趣(或者只有一个结果),则可以避免使用循环。如果你确定得到一些结果,这也是一个很好的做法:

...
if (rs.next()) {
    int id  = rs.getInt("id");
    int age = rs.getInt("age");
    String first = rs.getString("first");
    String last = rs.getString("last");
}
...

在任何情况下,不要忘记关闭不再使用的资源(ResultSet,Statement,Connection ...)