广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Asp.net 通用万级数据分页代码[修正下载地址]

    2018-05-08 11:29:37 次阅读 稿源:互联网
    广告
    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
    代码如下:

    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组件,如下图

        

    4.效果

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

    4.2 41万多条数据

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

    4.4 第二次,用时1.515秒

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

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

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


    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://xiazai.jb51.net/200810/yuanma/TestDataBindControlls.rar 【已修正】
    7.后话
    该说的都说了,希望对大家能有所帮助启发,还有就是此测试Demo还没有加缓存,有兴趣的朋友可以加上,欢迎大家讨论,批评,指导...

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告