Statement 与 ResultSet setFetchSize() 是做什么用的?

yuandejun 2007-12-24 02:01:34
谢谢。
...全文
3027 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
syflyhua 2011-09-21
  • 打赏
  • 举报
回复
这么多的废话。 加上ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE不就可以了吗。
yuandejun 2008-01-03
  • 打赏
  • 举报
回复
喔,知道了,谢谢啦。散分暂时不行,我可用分只 有83
ChDw 2008-01-02
  • 打赏
  • 举报
回复
setFetchSize最主要是为了减少网络交互次数设计的


访问ResultSet时,如果它每次只从服务器上取一行数据,则会产生大量的开销。

setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取得多少行数据回来,

这样在下次rs.next时,它可以直接从内存中获取出数据而不需要网络交互,提高了效率。



这个设置可能会被某些JDBC驱动忽略的,而且设置过大也会造成内存的上升。
yuandejun 2008-01-02
  • 打赏
  • 举报
回复
比如说吧: 搜索的是 100行,游标开始是 0 ,setFetchSize(20),是不是从0 - 20行。如果游标往下走,就是 20-40?
yuandejun 2007-12-28
  • 打赏
  • 举报
回复
说实话 ,我还是有点没想明白这个关系。
胡矣 2007-12-28
  • 打赏
  • 举报
回复
缺省时,驱动程序一次从查询里获取所有的结果。这样可能对于大的数据集来说是不方便的, 因此 JDBC 驱动提供了一个方法从一个数据库游标伤抽取少数几行的 ResultSet 的方法。

在链接的客户端这边缓冲了一小部分数据行,并且在用尽之后, 则通过重定位游标检索下一个数据行块。
胡矣 2007-12-28
  • 打赏
  • 举报
回复
ResultSet
setFetchSize
void setFetchSize(int rows)
throws SQLException为 JDBC 驱动程序设置此 ResultSet 对象需要更多行时应该从数据库获取的行数。如果指定的获取大小为零,则 JDBC 驱动程序忽略该值,随意对获取大小作出它自己的最佳猜测。默认值由创建结果集的 Statement 对象设置。获取大小可以在任何时间更改。

Statement
setFetchSize
void setFetchSize(int rows)
throws SQLException为 JDBC 驱动程序提供关于需要更多行时应该从数据库获取的行数的提示。指定的行数仅影响使用此语句创建的结果集合。如果指定的值为 0,则忽略该提示。默认值为零。
flybird 2007-12-26
  • 打赏
  • 举报
回复
setFetchSize()
是设置ResultSet每次向数据库取的行数
但是你要这样还是可以把所有的数据都取出来,这个只是优化了,取不完数据的情况下

setMaxRows()
是设置Resultset最多返回的行数
用下面这个方法才能满足你的要求
yuandejun 2007-12-26
  • 打赏
  • 举报
回复
但是我测试了一下,像这样:

Statement stmt = conn.createStatement();
ResultSet rsset = stmt.executeQuery("SELECT * FROM user LIMIT 30");
rsset.setFetchSize(10);
while(rsset.next()){
//这里还是30条记录,setFetchSize()没有起作用啊。
}


这是怎么回事呢?
mouse5s306 2007-12-25
  • 打赏
  • 举报
回复
statement.setFetchSize():
设置从数据库取得多行的行数大小

62,614

社区成员

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

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