论坛首页 Java企业应用论坛

关于jdbc的一种功能的实现

浏览 20091 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-27  
我想实现这样的功能:使用jdbc从一个数据量很大的表中先读一部分数据,然后再读一部分数据,像一些数据库客户端那样的效果。
请问各位大侠如何实现,jdbc里面是不是有个什么滚动的。
   发表时间:2012-02-27  
没看懂 lz什么意思 是要分页查询?
0 请登录后投票
   发表时间:2012-02-27  
rekoe.net 写道
没看懂 lz什么意思 是要分页查询?

是的,但不是自己写在sql语句里,而是通过对结果集的滚动来实现
0 请登录后投票
   发表时间:2012-02-27  
就是怎么把数据拿出来而不至于内存溢出
0 请登录后投票
   发表时间:2012-02-27  
此方案不可行,为啥?

“使用jdbc从一个数据量很大的表中先读一部分数据,然后再读一部分数据”,实现分页的效果,也就是说要实现数据库分页,而不是内存分页,也就是数据不能一次性全部加载到内存

假设,该功能存在(存在不存在我表示不太清楚),那么在用户浏览期间必须长期持有resultset,而不能关闭,导致长期占用连接,可能还有一些锁问题。如果用户半天才翻一页,那么,这个连接。。。
0 请登录后投票
   发表时间:2012-02-27  
freish 写道
此方案不可行,为啥?

“使用jdbc从一个数据量很大的表中先读一部分数据,然后再读一部分数据”,实现分页的效果,也就是说要实现数据库分页,而不是内存分页,也就是数据不能一次性全部加载到内存

假设,该功能存在(存在不存在我表示不太清楚),那么在用户浏览期间必须长期持有resultset,而不能关闭,导致长期占用连接,可能还有一些锁问题。如果用户半天才翻一页,那么,这个连接。。。

不是给用户用的,是我自己要将这些数据写入一个文件中,量太大老是溢出
0 请登录后投票
   发表时间:2012-02-27  
java_user 写道
freish 写道
此方案不可行,为啥?

“使用jdbc从一个数据量很大的表中先读一部分数据,然后再读一部分数据”,实现分页的效果,也就是说要实现数据库分页,而不是内存分页,也就是数据不能一次性全部加载到内存

假设,该功能存在(存在不存在我表示不太清楚),那么在用户浏览期间必须长期持有resultset,而不能关闭,导致长期占用连接,可能还有一些锁问题。如果用户半天才翻一页,那么,这个连接。。。

不是给用户用的,是我自己要将这些数据写入一个文件中,量太大老是溢出


这个可以在SQL上下工夫,只取对应纪录数
0 请登录后投票
   发表时间:2012-02-27  
一次取1000条,每页显示一百条,最后一个一百条,点下一页的时候再去查询。

缓存当然不存成一个文件,而是多个文件,比如1000条记录一个文件。
0 请登录后投票
   发表时间:2012-02-27  
你的意思  滚动游标
0 请登录后投票
   发表时间:2012-02-27  
java_user 写道
rekoe.net 写道
没看懂 lz什么意思 是要分页查询?

是的,但不是自己写在sql语句里,而是通过对结果集的滚动来实现



  LZ 童鞋,“不通过Sql 语句实现分页,而是通过对结果集滚动来实现”,你知道这是什么意思么?意思就是说,一次性把数据全部Load 到内存中,然后通过ResultSet 对象在结果集上进行滚动实现你所谓的分页...所以,我想问哈你,你的机器内存多大?
  或者就只能通过sql 语句来分段的取数据,比如每次只一百条记录,这样子可以避免你的机器内存吃不消的问题...
  只有这两种方式,别无它法!
  感觉你的表述怪怪的...
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics