快速业务通道

Asp.net通用万级数据分页代码

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

1.主题,Asp.net环境下,通用的数据分页(包括Oracle,SqlServer,DB2...)

很久以前,就想做一个通用点的数据分页组件,但苦于一直没有充足的时间,所以迟迟没有实现(当然,主要是因为有一定的难度,要处理视图状态,回传事件,自绘等...),"十一"期间,陪女朋友去了躺"湘西",白天游山玩水,晚上无事,吃吃当地的夜宵,无聊之际,google了一把Oracle的数据分页,竟然没有一个完整的关于Asp.net + Oracle数据分页的例子,要不就是有版本问题,索性决定自己弄一个.

2.环境

IDE;vs2008+asp.net2.0 or 3.0+Oracle9i

Oracle测试数据;41万多条

带宽;网通说是有2M的带宽,其实TNND只有100多KB

3.原理

利用Oracle9i的RowNum获取我们想要的数据,如图3.1

[复制此代码]CODE:

public IEnumerable GetPageSqlByOracle(string sql, int startRowIndex, int maximumRows, string orderBy)
{
string sqlFormat = string.Format("select * from (select rownum rn, pageTable.* from {0} pageTable where rownum <={1}) where rn>{2}", sql, startRowIndex + maximumRows, startRowIndex);
return ydjwOracleConn.RetriveDataSet(sqlFormat).Tables[0].DefaultView;
}

startRowIndex表示开始索引,maximumRows表示要获取的每页记录数目.

然后把分页后的数据绑定到ObjectDataSource组件,如下图

Asp.net通用万级数据分页代码

4.效果

Asp.net通用万级数据分页代码

4.1 支持多排序,比如时间,比如身份证明号码等

Asp.net通用万级数据分页代码

4.2 41万多条数据

4.3 单条件查询,第一次用时1.547秒

Asp.net通用万级数据分页代码

4.4 第二次,用时1.515秒

Asp.net通用万级数据分页代码

第三次差不多,就不贴了.

4.5 看看不带条件的查询,一次把41万条数据全部查询出来使用的时间

Asp.net通用万级数据分页代码

可以看到,不带条件查询41万条数据,第一次用时1.265秒.

Asp.net通用万级数据分页代码

4.6 可以看到不带条件查询41万条数据,第二次用时1.156秒

4.7 可用SqlServer,或者Db2等数据库代替,只需要修改 图3.1获取数据的方法,其他地方不用动.

5.需要注意的地方

5.1 记得数据量上万时,一定要加索引,否则要等得"花谢花开".

5.2 ObjectDataSource的所有参数名称,一定要和绑定的方法参数名称,顺序一致.

5.3 能用缓存的,尽量用缓存

5.4 SqlServer的分页算法,就不说了,替换一下图3.1的方法就行

5.5 因为数据库文件实在太大,不方便下载,有兴趣的朋友自己弄一张表就OK,加上webconfig中的数据库连接配置

6.下载

测试Demo下载 【已修正】

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号