简单明了的ADO.NET分页技巧

开发 后端
这里就ADO.NET分页在程序中的技巧总结,还列举了一个返回查询结果的第三页(页大小是 10)的一个案例,希望对大家有帮助。

ADO.NET分页还是比较常用的,于是我研究了一下ADO.NET分页,在这里拿出来和大家分享一下,希望对大家有用。ADO.NET 可以显式控制从数据源中返回什么样的数据,以及在 DataSet 中本地缓存多少数据。对查询结果的ADO.NET分页没有唯一的答案,但下面有一些设计应用程序时应该考虑的技巧。

避免使用带有 startRecord 和 maxRecords 值的 DataAdapter.Fill 重载。当以这种方式填充 DataSet 时,只有 maxRecords 参数(从 startRecord 参数标识的记录开始)指定的记录数量用于填充 DataSet,但无论如何总是返回完整的查询。这就会引起不必要的处理,用于读取“不需要的”记录;而且为了返回附加记录,会耗尽不必要的服务器资源。

#T#用于每次只返回一页记录的技术是创建 SQL 语句,把 WHERE 子句以及 ORDER BY 子句和 TOP 谓词组合起来。此技术取决于存在一种可唯一标识每一行的办法。当浏览下一页记录时,修改 WHERE 子句使之包含所有唯一标识符大于当前页***一个唯一标识符的记录。当浏览上一页记录时,修改 WHERE 子句使之返回所有唯一标识符小于当前页***个唯一标识符的记录。两种查询都只返回记录的 TOP 页。当浏览上一页时,需要以降序为结果排序。这将有效地返回查询的***一页。

另一项每次只返回一页记录的技术是创建 SQL 语句,把 TOP 谓词和嵌入式 SELECT 语句的使用结合在一起。此技术并不依赖于存在一种可唯一标识每一行的办法。使用这项技术的***步是把所需页的数量与页大小相乘。然后将结果传递给 SQL Query 的 TOP 谓词,该查询以升序排列。再把此查询嵌入到另一个查询中,后者从降序排列的嵌入式查询结果中选择 TOP 页大小。实质上,返回的是嵌入式查询的***一页。例如,要返回查询结果的第三页(页大小是 10),应该书写如下所示的命令:

  1. SELECT TOP 10 * FROM  
  2.  
  3. (SELECT TOP 30 * FROM Customers ORDER BY Id ASC) AS Table1  
  4.  
  5. ORDER BY Id DESC  

注意,从查询中返回的结果页以降序显示。如果需要,应该重新排序。

如果数据不经常变动,可以在 DataSet 中本地维护一个记录缓存,以此提高性能。例如,可以在本地 DataSet 中存储 10 页有用的数据,并且只有当用户浏览超出缓存***页和***一页时,才从数据源中查询新数据。

责任编辑:田树 来源: 博客
相关推荐

2020-05-27 09:30:52

JavaScript重构函数

2009-11-03 17:25:59

ADO.NET编程技巧

2009-12-28 15:38:36

ADO.NET分页

2009-12-25 09:59:48

ADO.NET分页

2009-10-29 10:34:31

ADO.NET使用技巧

2009-12-22 16:35:11

ADO.NET控件

2009-12-21 13:19:34

ADO.NET组件

2009-11-11 12:49:29

ADO.NET框架

2023-06-25 12:10:34

Linux文件权限

2009-12-22 09:50:23

ADO.NET学习

2009-11-04 16:55:16

ADO.NET Dat

2009-12-24 14:39:53

设计ADO.NET

2009-12-28 15:46:22

ADO.NET操作

2009-10-29 11:08:20

ADO.NET Dat

2009-12-21 13:59:03

ADO.NET特性

2011-05-20 11:31:07

ADO.NET

2009-11-04 15:44:39

ADO.NET Sql

2009-12-25 16:26:03

ADO.NET控制

2009-12-21 14:39:09

ADO.NET技巧

2009-11-12 12:39:16

ADO.NET Sta
点赞
收藏

51CTO技术栈公众号