午夜秒播伦理片

老鼠哥|网络站长门户网,PHP工程师,PHP教程,PHP100,PHP源码,PHP程序员
  • 老鼠哥网络站长门户改版新上线
  • 欢迎您老鼠哥网络门户网
  • 老鼠哥网络站长门户改版新上线
  • 欢迎您老鼠哥网络门户网

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

出处:老鼠哥站长网 作者:老鼠哥 日期:2012-12-16 18:00 浏览:次
1.主题,Asp.net环境下,通用的数据分页(包括Oracle,SqlServer,DB2...) 很久以前,就想做一个通用点的数据分页组件,但苦于一直没有充足的时间,所以迟迟没有实现(当然,主要是因为有一定的难度,要

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

  很久以前,就想做一个通用点的数据分页组件,但苦于一直没有充足的时间,所以迟迟没有实现(当然,主要是因为有一定的难度,要处理视图状态,回传事件,自绘等...),"十一"期间,陪女朋友去了躺"湘西",白天游山玩水,晚上无事,吃吃当地的夜宵,无聊之际,google了一把Oracle的数据分页,竟然没有一个完整的自拍AV视频 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://file.ddvip.com/2008_10/1224234438_ddvip_1159.rar 【已修正】

本文作者:

顶一下
(0)
0%
踩一下
(0)
0%
最新评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片

午夜秒播伦理片