Statement 与 ResultSet setFetchSize() 是做什么用的? 谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 statement.setFetchSize(): 设置从数据库取得多行的行数大小 但是我测试了一下,像这样:Statement stmt = conn.createStatement();ResultSet rsset = stmt.executeQuery("SELECT * FROM user LIMIT 30");rsset.setFetchSize(10);while(rsset.next()){ //这里还是30条记录,setFetchSize()没有起作用啊。}这是怎么回事呢? setFetchSize() 是设置ResultSet每次向数据库取的行数 但是你要这样还是可以把所有的数据都取出来,这个只是优化了,取不完数据的情况下setMaxRows()是设置Resultset最多返回的行数 用下面这个方法才能满足你的要求 ResultSetsetFetchSizevoid setFetchSize(int rows) throws SQLException为 JDBC 驱动程序设置此 ResultSet 对象需要更多行时应该从数据库获取的行数。如果指定的获取大小为零,则 JDBC 驱动程序忽略该值,随意对获取大小作出它自己的最佳猜测。默认值由创建结果集的 Statement 对象设置。获取大小可以在任何时间更改。 StatementsetFetchSizevoid setFetchSize(int rows) throws SQLException为 JDBC 驱动程序提供关于需要更多行时应该从数据库获取的行数的提示。指定的行数仅影响使用此语句创建的结果集合。如果指定的值为 0,则忽略该提示。默认值为零。 缺省时,驱动程序一次从查询里获取所有的结果。这样可能对于大的数据集来说是不方便的, 因此 JDBC 驱动提供了一个方法从一个数据库游标伤抽取少数几行的 ResultSet 的方法。在链接的客户端这边缓冲了一小部分数据行,并且在用尽之后, 则通过重定位游标检索下一个数据行块。 比如说吧: 搜索的是 100行,游标开始是 0 ,setFetchSize(20),是不是从0 - 20行。如果游标往下走,就是 20-40? setFetchSize最主要是为了减少网络交互次数设计的访问ResultSet时,如果它每次只从服务器上取一行数据,则会产生大量的开销。setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取得多少行数据回来,这样在下次rs.next时,它可以直接从内存中获取出数据而不需要网络交互,提高了效率。这个设置可能会被某些JDBC驱动忽略的,而且设置过大也会造成内存的上升。 这么多的废话。 加上ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE不就可以了吗。 请教一个有关java集合的面试题 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 给一份小型项目,前面5位平均100 java中如何给空格的值强制赋值 Java如何做计划任务?? java的package压缩包都有哪几种? 内网访问公网网页http请求应答是怎实现的 急!在动态改变了jTree的节点后,如何实时刷新jTree? 高分征集Think in java(第2版)中文电子版 (JBuild 4.0) jdatastore 的KEY 字符编码问题! 求助:"obsolete methods"的问题
设置从数据库取得多行的行数大小
ResultSet rsset = stmt.executeQuery("SELECT * FROM user LIMIT 30");
rsset.setFetchSize(10);
while(rsset.next()){
//这里还是30条记录,setFetchSize()没有起作用啊。
}这是怎么回事呢?
是设置ResultSet每次向数据库取的行数
但是你要这样还是可以把所有的数据都取出来,这个只是优化了,取不完数据的情况下setMaxRows()
是设置Resultset最多返回的行数
用下面这个方法才能满足你的要求
setFetchSize
void setFetchSize(int rows)
throws SQLException为 JDBC 驱动程序设置此 ResultSet 对象需要更多行时应该从数据库获取的行数。如果指定的获取大小为零,则 JDBC 驱动程序忽略该值,随意对获取大小作出它自己的最佳猜测。默认值由创建结果集的 Statement 对象设置。获取大小可以在任何时间更改。 Statement
setFetchSize
void setFetchSize(int rows)
throws SQLException为 JDBC 驱动程序提供关于需要更多行时应该从数据库获取的行数的提示。指定的行数仅影响使用此语句创建的结果集合。如果指定的值为 0,则忽略该提示。默认值为零。
访问ResultSet时,如果它每次只从服务器上取一行数据,则会产生大量的开销。setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取得多少行数据回来,这样在下次rs.next时,它可以直接从内存中获取出数据而不需要网络交互,提高了效率。这个设置可能会被某些JDBC驱动忽略的,而且设置过大也会造成内存的上升。