Vb教程   Vb.net教程   Vfp教程   C/C++教程   Vc/Vc++教程   Delphi教程   Java教程   Powerbuilder
  杀毒频道 | 短信频道 | 网络电视 | 论文中心 | 教你学上网 | 教你学软件 | 网页特效 | 电脑基础 | 论坛  
  计算机等级 | 程序员考试 | 英语四六级 | 职称英语 | 司法考试 | 报关员考试 | 公务员考试 | 翻译员考试 | 注册会计师  
  Html教程 | Css教程 | Xml教程 | Asp教程 | Asp.net | Php教程 | Jsp教程 | Linux教程 | QQ技巧  
Photoshop Illustrator ImageReady Maya教程 3D Max教程 Lightscape Coredraw教程 Authorware Autocad教程 Freehand教程
Access教程 Mysql教程 Sql server Oracle教程 Word教程 Excel教程 Powerpoint Frontpage Asp.net源码 Php源代码
Flash教程 Fireworks Dreamweaver C#教程 outlook教程 系统安装 vbscript教程 Javascript Jsp源代码 Asp源代码
您的位置:首页 >> Java教程 >> 正文

分页显示从数据库中读出的记录

文章来源:csdn 作者:chensheng913

现象:

  在用JDBC访问某个数据库,并读出一个ResultSet数据记录集时,如果记录数太大,则会占用客户端(运行java程序的机器)的大量内存(如果客户端是某个大企业的营业部门的代理点分机,则有可能java程序会占用完全部内存,然后报错),并且会造成客户端负载过重,运行速度极度缓慢(在sybase数据库中,我曾做过一个测试。选择某个大数据记录,SQL语句运行完需要4分钟,而在java客户端完全显示出来,则需要将近10分钟)。

   解决方案:

  给用户提供一个可选择分页显示的选项,如果用户不想分页显示则完全显示,否则分页显示。

  1.定义一个分页数全局常量,即每页显示的数据条数。


  private final static int SKIP = 100;

  2.定义一个确定某个分页条数的全局变量,即该显示页的当前显示数据条数。


  private static int cur = 0;


  3.定义一个ResultSet全局变量,以便多次使用


  private static java.sql.Result rs = null;


  4.打开一个数据库连接[/pre]


  Class.forName( sqlDriver );
   java.sql.Connection conn = DriverManager.getConnection( URL, (String)userName,(String)Passwd)
   Statement stmt = conn.createStatement();
   String searchSql = "......";
   rs = stmt.executeQuery(searchSql);

 5.获取查询结果集数据(一般是在查询按钮的响应事件函数里)


  ......
   nextButton.setEnable(true);
   cur = 0;
   while( cur < SKIP && rs.next() ){
   cur ++ ;
   .....(获取rs中的记录,存入java程序的变量中)
   }


  6.显示下一页的结果集数据(一般是在下页按钮的响应事件函数里)


  if( rs.getRow() == 0 )
   {
   nextButton.setEnable(false);
   closeConnection(); --rs的cursor已经到了最后,结果集显示完毕,关闭此次的连接
   }
   cur = 0;
   if(rs != null && rs.getRow() > 0)
   {
   ....将上页显示的内容清除
   while(cur < SKIP && rs.next() )
   {
   cur ++ ;
   .....(获取结果集中的记录,存入java程序的变量中)
   }
   }

  缺陷:

   此方法根据2.0版本的JDBC(具体和JDBC驱动程序的提供商有关)之前的ResultSet类产生,因为ResultSet无法将已经显示的结果集回滚,所以此法只能按照ResultSet类的定义,从左往右、从前往后的浏览数据结果。无法动态显示指定任意前后的结果集数据。

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号