如何在ResultSet中查找记录数

dku*_*mar 5 java jdbc resultset

我正在ResultSet查询Oracle查询.当我ResultSet在无限循环中迭代它时.

ResultSet rs = (ResultSet) // getting from statement
while (rs.next()) {
//
//
}
Run Code Online (Sandbox Code Playgroud)

这个循环没有终止,所以我试着找到使用的记录数,rs.getFetchSize()并返回一个值10.我想知道这是否是找出ResultSet中记录数的正确方法,如果计数为10,为什么它会进入无限循环.请提出你的意见.

Eri*_*ler 8

实际上,ResultSet没有关于它将返回的实际行数的线索.实际上,使用分层查询或流水线函数,数字也可能是无限的.10是结果集应该/将尝试在单个操作中获取的建议行数.(见下面的评论).

如果查询返回的行数多于预期,则最好检查查询.


Sun*_*hoo 5

要知道存在的记录数,请尝试以下代码

ResultSet rs =  // getting from statement

try {
        boolean b = rs.last();
        int numberOfRecords = 0;
        if(b){
            numberOfRecords = rs.getRow();
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)