Java 如何检索结果集大小

Java 如何检索结果集大小,java,jdbc,Java,Jdbc,我希望能够在不迭代resultset的情况下告诉jdbc查询返回多少条记录,即db表行 我试过了,但是没有按我想象的那样工作: if (rSet.getFetchSize()==0) System.out.println("no results returned"); while (rSet.next()) System.out.println(rSet.getString("transactionID"));

我希望能够在不迭代resultset的情况下告诉jdbc查询返回多少条记录,即db表行

我试过了,但是没有按我想象的那样工作:

        if (rSet.getFetchSize()==0) 
        System.out.println("no results returned");
        while (rSet.next())
            System.out.println(rSet.getString("transactionID"));
        rSet.next();
上面的代码片段打印第一条控制台消息,然后进入循环并迭代以在1+结果上执行第二条控制台消息

如何判断提取的记录数?ResultSet.getFetchSize用于什么

//------------------

编辑:希望在结果集上无需任何迭代即可显示此计数。确信这是不可能的。参考问题的答案是这样的

ResultSet.getFetchSize向底层数据库驱动程序建议一次应通过网络获取多少条记录,但这与SQL结果集的大小无关

如果要了解结果的大小,可以尝试执行计数查询:

进一步阅读:

getFetchSize向底层数据库驱动程序建议一次应通过网络获取多少条记录,但它与SQL结果集的大小无关

如果要了解结果的大小,可以尝试执行计数查询:

进一步阅读:


fetchSize控制在迭代结果时驱动程序从服务器请求的行数。它与查询返回的实际行数无关。您应该真正避免需要知道结果集的总行数,这样做的成本非常高;只需在移动过程中处理您的行。如果要检查是否至少有一行,请调用rs.next并使用do..while循环而不是while循环处理其余的行。fetchSize控制驱动程序在迭代结果时从服务器请求的行数。它与查询返回的实际行数无关。您应该真正避免需要知道结果集的总行数,这样做的成本非常高;只需在移动过程中处理您的行。如果要检查是否至少有一行,请调用rs.next并使用do..while循环而不是while循环处理其余的行。
SELECT COUNT(*) FROM yourTable WHERE <conditions> ...