获取Java结果集中的行数

Mr *_*gan 26 java mysql jdbc

有没有人知道从MySQL数据库返回的Java结果集中获取行数的更好方法?返回的结果集不会是从数据库读取的总行数,所以我认为我不能使用SQL的COUNT聚合函数.

public static int getResultSetRowCount(ResultSet resultSet) {
    int size = 0;
    try {
        resultSet.last();
        size = resultSet.getRow();
        resultSet.beforeFirst();
    }
    catch(Exception ex) {
        return 0;
    }
    return size;
}
Run Code Online (Sandbox Code Playgroud)

duf*_*ymo 21

更好的答案是在成功将ResultSet加载到对象或集合之前忘记行数.您可以使用这些选项中的任何一个来保留行数.

在尽可能最窄的方法范围内关闭ResultSets(以及Connection和Statement等所有SQL资源)非常重要.这意味着不将ResultSet传递出持久层.最好使用Collection size()调用获取行数.

停止思考数据库并开始考虑对象.Java是一种面向对象的语言.

  • 我发现自己想知道行数,以便我可以制作一个适当大小的“ArrayList”。我的意思是,摊销成本可以忽略不计,但如果我第一次就做对了,为什么不正确呢?:-) (2认同)

小智 9

你可以执行

SELECT FOUND_ROWS()
Run Code Online (Sandbox Code Playgroud)

执行SELECT语句后立即查找行计数.