zoukankan      html  css  js  c++  java
  • sql server中的分页数据查询

    1.引言

        今天在工作中遇到一个需要进行sql server分页数据查询的问题,但是分页数据查询的sql却忘记了,最终通过查询资料解决了该问题。现在把解决方法记下,以备查阅。

    在这里需要感谢博客园Qlin

    2.数据分页语句

    假设需要查询表为Test,Test表中有个字段为ID(我这里用的是int型),当前页pageIndex=5,页大小pageSize=10。则分页查询语句如下:

    SELECT * FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY ID) AS ROWID,* FROM Test
    ) AS T WHERE T.ROWID BETWEEN (pageIndex-1) * pageSize+1 and pageIndex * pageSize;

    3. C#实现

           /// <summary>
            /// 获取分页数据列表
            /// </summary>
            /// <param name="strFieldList">查询字段</param>
            /// <param name="strWhere">查询条件</param>
            /// <param name="strOrderBy">排序字段</param>
            /// <param name="pageIndex">当前页</param>
            /// <param name="pageSize">页大小</param>
            /// <returns></returns>
            public DataSet GetListByPage(string strFieldList, string strWhere, string strOrderBy, int pageIndex, int pageSize)
            {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("select");
                if (string.IsNullOrEmpty(strFieldList))  //去除null
                {
                    strFieldList = strFieldList.Trim();
                    if (string.IsNullOrEmpty(strFieldList)) // 去除只有空格的字符串
                    {
                        strFieldList = " * ";
                    }
                }
                strSql.Append(" " + strFieldList + " ");
                strSql.Append(" from (select row_number() over (order by id) as rowid,");
                strSql.Append(strFieldList + "from Test");
    
                if (!string.IsNullOrEmpty(strWhere)) //去除null
                {
                    strWhere = strWhere.Trim().ToLower();
                    if (!string.IsNullOrEmpty(strWhere)) // 去除只有空格的字符串
                    {
                        strWhere = (strWhere.StartsWith("where")) ? " " + strWhere : " where " + strWhere;
                        strSql.Append(strWhere);
                    }
                }
                strSql.Append(") as t ");
                if (!string.IsNullOrEmpty(strWhere)) // 没有查询条件
                {
                    strWhere += " and t.rowId between {0} and {1}";
                }
                else
                {
                    strWhere = "where t.rowId between {0} and {1}";
                }
                strWhere = string.Format(strWhere, (pageIndex - 1) * pageSize + 1, pageIndex * pageSize);
                strSql.Append(strWhere);
    
                if (!string.IsNullOrEmpty(strOrderBy)) //去除null
                {
                    strOrderBy = strOrderBy.Trim().ToLower();
                    if (!string.IsNullOrEmpty(strOrderBy)) // 去除只有空格的字符串
                    {
                        strOrderBy = (strOrderBy.StartsWith("order by")) ? " " + strOrderBy : " order by " + strOrderBy;
                        strSql.Append(strOrderBy);
                    }
                }
    
                return DbHelperSQL.Query(strSql.ToString());
            }

    4. 原文

    Sql Server 数据分页

    学到的就要教人
  • 相关阅读:
    Android 数据库SQLite的使用简单Demo
    jQuery插件FullCalendar日程表
    Activiti工作流访问路径资源注册和管理
    电子商务中的数据仓库技术
    打开”我的电脑”慢的解决办法
    数据结构定义中的中(大陆地区)美差异
    Wubi离线安装Ubuntu
    C++如何获得U盘的盘符以及U盘相关属性的代码
    浮动引起的文本重影
    定位相关的怪异问题
  • 原文地址:https://www.cnblogs.com/stonemqy/p/5128208.html
Copyright © 2011-2022 走看看