这不是一个很简单的手术吗?但是,我看到既没有size()也没有length()方法。


当前回答

int i = 0;
while(rs.next()) {
    i++;
}

其他回答

int i = 0;
while(rs.next()) {
    i++;
}
ResultSet rs = ps.executeQuery();
int rowcount = 0;
if (rs.last()) {
  rowcount = rs.getRow();
  rs.beforeFirst(); // not rs.first() because the rs.next() below will move on, missing the first element
}
while (rs.next()) {
  // do your standard per row stuff
}

我也有同样的问题。以这种方式使用ResultSet.first()在执行后解决它:

if(rs.first()){
    // Do your job
} else {
    // No rows take some actions
}

文档(链接):

布尔第一次() 抛出SQLException异常 将光标移动到此ResultSet对象的第一行。 返回: 如果光标位于有效的 行;如果结果集中没有行,则为False 抛出: SQLException—如果发生数据库访问错误;在封闭的结果集或结果集类型为TYPE_FORWARD_ONLY时调用此方法 SQLFeatureNotSupportedException—如果JDBC驱动程序不支持 这个方法 自: 1.2

最简单的方法,运行Count(*)查询,执行resultSet.next()指向第一行,然后执行resultSet.getString(1)获得计数。代码:

ResultSet rs = statement.executeQuery("Select Count(*) from your_db");
if(rs.next()) {
   int count = rs.getString(1).toInt()
}

这是一种简单的行计数方法。

ResultSet rs = job.getSearchedResult(stmt);
int rsCount = 0;

//but notice that you'll only get correct ResultSet size after end of the while loop
while(rs.next())
{
    //do your other per row stuff 
    rsCount = rsCount + 1;
}//end while