下载此文档

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


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

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

非法内容举报中心
文档信息