resultSet问题

一个人的圆月弯刀 2006-02-25 12:45:48
为什么当我操作resultSet
resultSet.absolute(currentRow);
resultSet.setFetchSize(pageSize);
的时候,虽然我设置了要显示的第一行,以及每页显示的记录数,但是返回结果仍然是全部记录?
...全文
109 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
我的理解还是取行数。
我的思维是:只要设置了行数,应该只取那个大小的块中的数据,而且只有当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++) {
...
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-25 12:45
社区公告
暂无公告