resultSet问题

一个人的圆月弯刀 2006-02-25 12:45:48
为什么当我操作resultSet
resultSet.absolute(currentRow);
resultSet.setFetchSize(pageSize);
的时候,虽然我设置了要显示的第一行,以及每页显示的记录数,但是返回结果仍然是全部记录?
...全文
127 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我的理解还是取行数。
我的思维是:只要设置了行数,应该只取那个大小的块中的数据,而且只有当FETCHSIZE为0的时候,才会由系统自己猜返回多少行回来。
我现在设置的是大于0的数值,那么应该返回的是指定的有多少的记录了吧?
为什么会返回全部的记录。
比如我设置了currentRow=0,fetchsize为300,总的记录数为1232,结果返回的就是全部1232行的数据。
hanhongmin 2006-02-25
  • 打赏
  • 举报
回复
UP
doway 2006-02-25
  • 打赏
  • 举报
回复
>它不就是指定要查找的记录数的吗?

绝对不是,除非我的星星是假的。:)
doway 2006-02-25
  • 打赏
  • 举报
回复
楼主贴出来的这段话早些天我也看过了,老实说没完全看懂,不懂的地方只有靠猜的了,好在我一直都猜得较准。

这猜测试这段话的意思是说:当结果集对象需要更多的行的时候,JDBC 驱动程序应该从数据库中 Fetch 多少行回来。

当我们取得一个结果集的时候,JDBC 并未真正地将数据取到内存中,内存中只有一个游标,当我们读数据的时候,它才去取(我估计是当 rs.getXxxx 的时候)。

出于性能的考虑,每次 IO 中通常需要使用较大的块,我猜测 setFetchSize 就是设置这个块的大小的,而并不是设置总共读取几行。

skycncomp 2006-02-25
  • 打赏
  • 举报
回复
招聘
地点北京

qq: 283765999
  • 打赏
  • 举报
回复
setFetchSize
public void setFetchSize(int rows) throws SQLException
Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for this ResultSet object. If the fetch size specified is zero, the JDBC driver ignores the value and is free to make its own best guess as to what the fetch size should be. The default value is set by the Statement object that created the result set. The fetch size may be changed at any time.
  • 打赏
  • 举报
回复
setFetchSize我查了JDBC的文档,它不就是指定要查找的记录数的吗?
而且我开始指定了当前行的话,应该它不会返回全部的记录的呀。

另一个问题:setFetchSize放在后面就没有效果吗?
doway 2006-02-25
  • 打赏
  • 举报
回复
setFetchSize

这个方法楼主理解错误了,不可能指望它来分页。

for (int i=0; i<pageSize; i++) {
...

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧