查询数据库时,如何有效实现分页

查询数据库时,如何有效实现分页,第1张

针对查询语句做处理,同时对请求页面地址做分析

list.aspx?pageid=5 //表示访问第五页

后台语言里,先对查询条件做预处理

pagepre=pagesize*4 //pagesize 用于表示分页大小,例如10,则前4页共有40条记录

查询语句

sqlcmd="select top "+pagesize+" from tabelname where id not in (select top "+pagepre+" from tablename order by id desc)"

*** 作原理为将当前页前显示的所有记录从数据查询结果中排除,也就是not in 后面的部分,然后从剩余的结果冲,读取pagesize大小的记录值。筛选条件、排序条件放在子查询中

webservice查询数据超过1000时需要分页。

webservice一般指WebService。WebService是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序。

可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互 *** 作的应用程序。

楼上那些我觉得有点不妥。提醒一下楼下的lz 用的vs2003 也就是说是.net framework 1.1

DataGrid 虽然是有分页问题,可是只是在表示层分页。即分页显示,而lz 这里应该是想了解是的,分页读取数据。虽然表述上很接近,但是在原理和性能上都有天壤之别。

简单易用的分页功能,ADO里面的 DbDataAdapter 对象里就有。

如:

DbDataAdapter 对象的

(SqlDataAdapter 继承了DbDataAdapter,所以可用)

public int Fill (

DataSet dataSet,

int startRecord,

int maxRecords,

string srcTable

)

参数

dataSet

要用记录和架构(如果必要)填充的 DataSet。

startRecord

从其开始的从零开始的记录号。

maxRecords

要检索的最大记录数。

srcTable

用于表映射的源表的名称。

返回值

已在 DataSet 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。

-------

PS:

在读取数据的时候就考虑分页问题,远远优于把所有数据读出,再考虑分页显示好得多。效率的差别是显而易见的。

建议楼主多看看MSDN,多多熟读ADO对象的API文档。

现在VS2008 beta早已上市,建议lz至少现在应该使用.NET 2005 来做开发。

但是不要因为MS强大的IDE ,而忽视了对运行机制(也就是原理)探寻的渴望。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9575016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存