下载此文档

中实现查询结果的分页显示..doc


文档分类:办公文档 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
中实现查询结果的分页显示一、问题分析:进行数据库编程时,一般是将查询结果填充到DataSet的DataTable对象中,再通过与其绑定的DataGrid控件显示出来。很多时候查询结果的记录数会比较大,虽然理论上一个DataTable对象可以容纳16000000行,但在实际操作中,我们实在没有必要将全部记录装入DataTable,原因在于:用户肯定不会同时浏览这么多行,滚动条的出现使程序操作更繁琐,并且通过网络传输的记录太多,程序的效率也会大大降低。因此应尽量减少读取的记录数,采用分页机制:一次显示一页内容,只读取需要的记录。在填充DataTable时,将起始记录和记录个数作为参数传递给DataAdapter的Fill方法,就能实现简单的分页效果,代码如下:(dt,(n-1)*10,10,"订单")'读订单表的第n页(每页10行)填充dt实际在执行时,DataAdapter仍然要读取指定记录前的所有记录(即包括前n-1页),然后放弃它们。所以该方法只适用于较小的数据表,若处理大型数据库,并不能实质上提升效率。为了更好的实现分页机制,必须编写一些灵活的SQL语句。二、实现方法:(订单表)如图所示,假设有一个12条记录的数据表“订单”,按“订单ID”列排序,我们要分3页显示,每页4行,获取第1页的SQL语句很简单:SELECTTOP4*FROM订单ORDERBY订单ID移到下一页的语句也很简单,假设当前正处于表的第2页,想读出后4行,这些行的订单ID值应大于当前页最后一条记录的订单ID值:SELECTTOP4*FROM订单WHERE订单ID>8ORDERBY订单ID获取最后一页的语句稍复杂一些:按反向顺序读取记录,然后选择结果中的前4行。为简化问题,我们假设表中的总记录数是每页记录数的整数倍:SELECTTOP4*FROM订单ORDERBY订单IDDESC但这样得到的结果,行的顺序是反的(即按订单ID从大到小排列),所以需要颠倒这些行的顺序,我们将以上查询当作另一个正向排序查询命令的子查询:SELECT*FROM订单WHERE订单IDIN(SELECTTOP4订单IDFROM订单ORDERBY订单IDDESC)ORDERBY订单ID假设当前页是第2页,移到上一页的语句如下,同样要将行的顺序颠倒一次:SELECT*FROM订单WHERE订单IDIN(SELECTTOP4订单IDFROM订单WHERE订单ID<5ORDERBY订单IDDESC)ORDERBY订单ID现在可以在Windows窗体或Web窗体中实现第一页、上一页、下一页、最后一页等按钮了,我们再添加一个“转到”按钮,实现直接显示第n页的效果。例如,显示第5页可先读取前20行,再提取结果中的后4行:SELECTTOP4*FROM订单WHERE订单IDIN(SELECTTOP20订单IDFROM订单ORDERBY订单ID)ORDERBY订单IDDESC此查询的结果也是反向的,同样需要将查询结果当作另一个正向排序查询命令的子查询:SELECT*FROM订单WHERE订单IDIN(SELECTTOP4订单IDFROM订单WHERE订单IDIN(SELECTTOP20订单IDFROM订单ORDERBY订单ID)ORDERBY订单IDDESC)ORDERBY订单ID在实际编程中,只需将每页记录数

中实现查询结果的分页显示. 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人分享精品
  • 文件大小0 KB
  • 时间2016-01-04
最近更新