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



我的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");
      }
...

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

检查是否返回某些内容仍然是有意义的:

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

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

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

无论如何,不要忘记关闭不再使用的资源(结果集,语句,连接...