• SQL 语句 数据分页方法


    #region 数据分页 返回 DataTable
            /// <summary>
            /// 摘要:
            ///     数据分页
            /// 参数:
            ///     sql:传入要执行sql语句
            ///     param:参数化
            ///     orderField:排序字段
            ///     orderType:排序类型
            ///     pageIndex:当前页
            ///     pageSize:页大小
            ///     count:返回查询条数
            /// </summary>
            public DataTable GetPageList(string sql, SqlParam[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
            {
                StringBuilder sb = new StringBuilder();
                try
                {
                    int num = (pageIndex - 1) * pageSize;
                    int num1 = (pageIndex) * pageSize;
                    sb.Append("Select * From (Select ROW_NUMBER() Over (Order By " + orderField + " " + orderType + "");
                    sb.Append(") As rowNum, * From (" + sql + ") As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + "");
                    count = Convert.ToInt32(this.GetObjectValue(new StringBuilder("Select Count(1) From (" + sql + ") As t"), param));
                    return this.GetDataTableBySQL(sb, param);
                }
                catch (Exception e)
                {
                    DbLog.WriteException(e);
                    return null; ;
                }
            }
            /// <summary>
            /// 摘要:
            ///     数据分页
            /// 参数:
            ///     sql:传入要执行sql语句
            ///     orderField:排序字段
            ///     orderType:排序类型
            ///     pageIndex:当前页
            ///     pageSize:页大小
            ///     count:返回查询条数
            /// </summary>
            public DataTable GetPageList(string sql, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
            {
                return GetPageList(sql, null, orderField, orderType, pageIndex, pageSize, ref  count);
            }
            #endregion
    

      例子:执行完程序后的SQL。

    Select * From (Select ROW_NUMBER() Over (Order By order_id asc) As rowNum, * From (SELECT 
                                E.order_id,
                                E.order_no,
                                E.cust_no, 
                                E.cust_name, 
                                E.or_currency_Name,
                                E.or_ask_money,
                                E.or_sale_uname, 
                                E.or_date,
                                E.touching_uname,
                                E.touching_date,
                                E.or_check,
                                E.or_check_date, 
                                E.or_status,
                                E.or_remark,
                                E.change_uname, 
                                E.change_uid,
                                E.change_date,
                                E.aga_status,
                                Q.op_id,
                                Q.op_matno, 
                                Q.op_matname, 
                                Q.op_matStandard,
                                Q.op_unit,
                                Q.op_unit_id,
                                Q.op_quantity, 
                                Q.op_price,
                                Q.op_money, 
                                Q.op_delivery_date,
                                Q.IsStockNum,
                                Q.NotStockNum,
                                Q.op_remark,
                                Q.pro_code,
                                Q.aga_status as aga_status2,
                                D.dep_type,
    							D.amount           
                                FROM YZOrder as E LEFT JOIN 
                                YZOrder_product as Q on e.order_no = Q.order_no LEFT JOIN 
                                YZ_Depot as D on q.op_matno= D.mat_no WHERE 1=1 AND E.order_no like '' + '%'  AND E.cust_name like '' + '%'  AND Q.op_matno like '' + '%'  AND Q.pro_code like '' + '%'  AND E.touching_date >= '2014/5/9 20:00:00'  AND E.touching_date <= '2014/5/16 20:00:00' ) As T ) As N Where rowNum > 0 And rowNum <= 20
    

      

  • 相关阅读:
    array、vector、forward-list、list、deque的扩容,栈与队列,基于范围的for循环
    带默认参数值的函数
    :: 访问全局变量
    using来定义类的别名,typedef,#define
    const int* p
    内存
    变量的定义,强制类型转换
    HTTP请求流程(一)----流程简介
    DIY一个DNS查询器:程序实现
    详解C/C++函数指针声明
  • 原文地址:https://www.cnblogs.com/lengv10/p/3720518.html
Copyright © 2020-2023  润新知