【问题标题】:How to retrieve the ResultSet size [duplicate]如何检索结果集大小[重复]
【发布时间】:2016-11-13 14:01:13
【问题描述】:

我希望能够在不遍历结果集的情况下判断 jdbc 查询返回多少记录,即 db-table 行。

我尝试了ResultSet.getFetchSize()-- 但没有像我想象的那样工作:

        if (rSet.getFetchSize()==0) 
        System.out.println("no results returned");
        while (rSet.next())
            System.out.println(rSet.getString("transactionID"));
        rSet.next();

上面的代码 sn-p 打印第一条控制台消息,然后进入循环并迭代以在 1+ 个结果上执行第二条控制台消息。

如何判断获取的记录数? ResultSet.getFetchSize() 是干什么用的?

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

编辑:希望无需在ResultSet 上进行任何迭代即可告诉此计数。确信这是不可能的。提到的Q的答案是这样说的。

【问题讨论】:

  • fetchSize 控制驱动程序在迭代结果时从服务器请求多少行。它与查询返回的实际行数没有任何关系。
  • 你真的应该尽量避免需要知道结果集的总行数,得到它是非常昂贵的;只需在您移动时处理您的行。如果要检查是否至少有一行,请调用 rs.next() 并使用 do..while 循环而不是 while 循环来处理其余行。

标签: java jdbc


【解决方案1】:

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

如果您想知道结果有多大,可以尝试进行COUNT 查询:

SELECT COUNT(*) FROM yourTable WHERE <conditions> ...

进一步阅读:

What does Statement.setFetchSize(nSize) method really do in SQL Server JDBC driver?

How do I get the size of a java.sql.ResultSet?

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2014-06-15
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多