关于Sql分页之Oracle版

我们从数据库中读去数据,显示于页面。比较简易的方式无非是获取所有的数据,进行绑定。

可是如果数据量成千上万,dataset可能就是发生内存溢出。

事实上我们分页显示的时候每页数据不大可能超过1000条。

否则那样的页面虽都会任何人失去耐心。

那么我们只需从数据库中拿到指定页和条数的数据。

为此我们还需要保证所有数据的排序的。

否则翻页时第一页的数据和第二页的数据可能会重复。

 

下面是本人整理的sql分页函数。大家可以根据实际需要,传递OracleParameter的。

注意orderby参数必须提供,如是空字符串则sql报错。

 

        /// <summary>
        /// 根据分页参数,查询条件来获得DataTable
        /// </summary>
        /// <param name="columnList"></param>
        /// <param name="tableList"></param>
        /// <param name="WhereCondition"></param>
        /// <param name="orderby"></param>
        /// <param name="PageSize"></param>
        /// <param name="PageIndex"></param>
        /// <returns></returns>
        public DataTable GetDBRecords(string columnList, string tableList, string WhereCondition, string orderby, int PageSize, int PageIndex)
        {
                    int rowStart = PageSize * (PageIndex - 1) + 1;
                    int rowEnd = PageSize * PageIndex;
                    string sql = string.Format("select * from (select row_number() over(order by {3}) rowindex, {0},(select count(*) from {1} where {2}) AS RecordCount from {1} where {2} order by {3} ) tmpTable where rowindex >= {4} and rowindex <= {5} ", columnList, tableList, WhereCondition, orderby, rowStart, rowEnd);
                    return ExecuteDataset(sql).Tables[0];

            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值