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;
}
很久以前,就想做一个通用点的数据分页组件,但苦于一直没有充足的时间,所以迟迟没有实现(当然,主要是因为有一定的难度,要处理视图状态,回传事件,自绘等...),"十一"期间,陪女朋友去了躺"湘西",白天游山玩水,晚上无事,吃吃当地的夜宵,无聊之际,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还没有加缓存,有兴趣的朋友可以加上,欢迎大家讨论,批评,指导...
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月29日
2024年11月29日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]