我用过一个ResultSet返回一定数量的行.我的代码是这样的:
ResultSet res = getData();
if(!res.next())
{
System.out.println("No Data Found");
}
while(res.next())
{
// code to display the data in the table.
}
Run Code Online (Sandbox Code Playgroud)
有没有方法可以检查返回的行数ResultSet?或者我必须自己写?
我有一个.jsp页面,我有一个显示Oracle数据库记录的GUI表.该表允许典型的分页行为,例如"FIRST","NEXT","PREVIOUS"和"LAST".记录是从执行SQL语句返回的Java ResultSet对象中获取的.
这个ResultSet可能非常大,所以我的问题是:
如果我有一个包含一百万条记录的ResultSet但我的表只显示ResultSet中前十条记录中的数据,那么只有当我开始请求记录数据时才会获取数据,或者一旦ResultSet将所有数据完全加载到内存中从执行SQL语句返回?
我正在ResultSet查询Oracle查询.当我ResultSet在无限循环中迭代它时.
ResultSet rs = (ResultSet) // getting from statement
while (rs.next()) {
//
//
}
Run Code Online (Sandbox Code Playgroud)
这个循环没有终止,所以我试着找到使用的记录数,rs.getFetchSize()并返回一个值10.我想知道这是否是找出ResultSet中记录数的正确方法,如果计数为10,为什么它会进入无限循环.请提出你的意见.
在SO的一些答案中,建议使用ResultSet函数getRow()来获取查询结果中的条目数.但是,遵循代码
private static int getSizeOfResultSet(ResultSet result) throws SQLException{
if(result != null){
int count = 0;
while(result.next()){
count++;
}
System.out.println("Count of resultset is " + result.getRow() + " and count " + count);
return result.getRow();
}else{
System.out.println("Result is null");
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
正在回报我的事情
Count of resultset is 0 and count 1
Run Code Online (Sandbox Code Playgroud)
当确保条目存在时(在JUnit测试用例中).请注意,此项目必须符合Java6标准,因此可能是问题所在.使用该getRow()功能有什么需要考虑的吗?
另外,我尝试过
result.last();
int c = result.getRow();
result.beforeFirst();
return c;
Run Code Online (Sandbox Code Playgroud)
就像这里提到的那样,结果仍然是0.
编辑:我应该提到while(result.next())-loop是用于测试目的.没有循环的行为完全相同(即0).