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


当前回答

我检查了ResultSet接口的运行时值,发现它几乎一直都是一个ResultSetImpl。ResultSetImpl有一个名为getUpdateCount()的方法,它返回您正在寻找的值。

下面的代码示例应该足够了: ResultSet ResultSet = executeQuery(sqlQuery); double rowCount = ((ResultSetImpl)resultSet).getUpdateCount()

我知道向下转换通常是一个不安全的过程,但这个方法还没有让我失败。

其他回答

String sql = "select count(*) from message";
ps =  cn.prepareStatement(sql);

rs = ps.executeQuery();
int rowCount = 0;
while(rs.next()) {
    rowCount = Integer.parseInt(rs.getString("count(*)"));
    System.out.println(Integer.parseInt(rs.getString("count(*)")));
}
System.out.println("Count : " + rowCount);
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
}

今天,我用了这个逻辑,为什么我不知道得到RS的计数。

int chkSize = 0;
if (rs.next()) {
    do {  ..... blah blah
        enter code here for each rs.
        chkSize++;
    } while (rs.next());
} else {
    enter code here for rs size = 0 
}
// good luck to u.

我也有同样的问题。以这种方式使用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

SELECT COUNT(*) FROM…查询。

OR

int size =0;
if (rs != null) 
{
  rs.last();    // moves cursor to the last row
  size = rs.getRow(); // get row id 
}

在这两种情况下,都不需要遍历整个数据。