zoukankan      html  css  js  c++  java
  • 构造获取分页操作SQL语句

    构造获取分页操作SQL语句

            /// <summary>
            /// 获取分页操作SQL语句(对于排序的字段必须建立索引,优化分页提取方式)
            /// </summary>
            /// <param name="tblName">操作表名称</param>
            /// <param name="fldName">排序的索引字段</param>
            /// <param name="PageIndex">当前页</param>
            /// <param name="PageSize">每页显示记录数</param>
            /// <param name="totalRecord">总记录数</param>
            /// <param name="OrderType">排序方式(0升序,1为降序)</param>
            /// <param name="strWhere">检索的条件语句,不需要再加WHERE关键字</param>
            /// <returns></returns>
            public static string ConstructSplitSQL(string tblName,
                                                    string fldName,
                                                    int PageIndex,
                                                    int PageSize,
                                                    int totalRecord,
                                                    int OrderType,
                                                    string strWhere)
            {
                string strSQL = "";
                string strOldWhere = "";
                string rtnFields = "*";

                // 构造检索条件语句字符串
                if (strWhere != "")
                {
                    // 去除不合法的字符,防止SQL注入式攻击
                    strWhere = strWhere.Replace("'", "''");
                    strWhere = strWhere.Replace("--", "");
                    strWhere = strWhere.Replace(";", "");

                    strOldWhere = " AND " + strWhere + " ";

                    strWhere = " WHERE " + strWhere + " ";
                }

                // 升序操作
                if (OrderType == 0)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " >= ( SELECT MAX(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                        strSQL += strWhere + "ORDER BY " + fldName + " ASC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " > ( SELECT MAX(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                    }
                }
                // 降序操作
                else if (OrderType == 1)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " <= ( SELECT MIN(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                        strSQL += strWhere + "ORDER BY " + fldName + " DESC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " < ( SELECT MIN(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                    }
                }
                else // 异常处理
                {
                    throw new DataException("未指定任何排序类型。0升序,1为降序");
                }

                return strSQL;
            }


            /// <summary>
            /// 获取分页操作SQL语句(对于排序的字段必须建立索引)
            /// </summary>
            /// <param name="tblName">操作表名</param>
            /// <param name="fldName">操作索引字段名称</param>
            /// <param name="PageIndex">当前页</param>
            /// <param name="PageSize">每页显示记录数</param>
            /// <param name="rtnFields">返回字段集合,中间用逗号格开。返回全部用“*”</param>
            /// <param name="OrderType">排序方式(0升序,1为降序)</param>
            /// <param name="strWhere">检索的条件语句,不需要再加WHERE关键字</param>
            /// <returns></returns>
            public static string ConstructSplitSQL(string tblName,
                                                    string fldName,
                                                    int PageIndex,
                                                    int PageSize,
                                                    string rtnFields,
                                                    int OrderType,
                                                    string strWhere)
            {
                string strSQL = "";
                string strOldWhere = "";

                // 构造检索条件语句字符串
                if (strWhere != "")
                {
                    // 去除不合法的字符,防止SQL注入式攻击
                    strWhere = strWhere.Replace("'", "''");
                    strWhere = strWhere.Replace("--", "");
                    strWhere = strWhere.Replace(";", "");

                    strOldWhere = " AND " + strWhere + " ";

                    strWhere = " WHERE " + strWhere + " ";
                }

                // 升序操作
                if (OrderType == 0)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " >= ( SELECT MAX(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                        strSQL += strWhere + "ORDER BY " + fldName + " ASC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " > ( SELECT MAX(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                    }
                }
                // 降序操作
                else if (OrderType == 1)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " <= ( SELECT MIN(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                        strSQL += strWhere + "ORDER BY " + fldName + " DESC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " < ( SELECT MIN(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                    }
                }
                else // 异常处理
                {
                    throw new DataException("未指定任何排序类型。0升序,1为降序");
                }

                return strSQL;
            }


            /// <summary>
            /// 获取分页操作SQL语句(对于排序的字段必须建立索引)
            /// </summary>
            /// <param name="tblName">操作表名</param>
            /// <param name="fldName">操作索引字段名称</param>
            /// <param name="unionCondition">用于连接的条件,例如: LEFT JOIN UserInfo u ON (u.UserID = b.UserID)</param>
            /// <param name="PageIndex">当前页</param>
            /// <param name="PageSize">每页显示记录数</param>
            /// <param name="rtnFields">返回字段集合,中间用逗号格开。返回全部用“*”</param>
            /// <param name="OrderType">排序方式,0升序,1为降序</param>
            /// <param name="strWhere">检索的条件语句,不需要再加WHERE关键字</param>
            /// <returns></returns>
            public static string ConstructSplitSQL(string tblName,
                string fldName,
                string unionCondition,
                int PageIndex,
                int PageSize,
                string rtnFields,
                int OrderType,
                string strWhere)
            {
                string strSQL = "";
                string strOldWhere = "";

                // 构造检索条件语句字符串
                if (strWhere != "")
                {
                    // 去除不合法的字符,防止SQL注入式攻击
                    strWhere = strWhere.Replace("'", "''");
                    strWhere = strWhere.Replace("--", "");
                    strWhere = strWhere.Replace(";", "");

                    strOldWhere = " AND " + strWhere + " ";

                    strWhere = " WHERE " + strWhere + " ";
                }

                // 升序操作
                if (OrderType == 0)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + unionCondition + " ";

                        //strSQL += "WHERE (" + fldName + " >= ( SELECT MAX(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                        strSQL += strWhere + "ORDER BY " + fldName + " ASC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + unionCondition + " ";

                        strSQL += "WHERE (" + fldName + " > ( SELECT MAX(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                    }
                }
                // 降序操作
                else if (OrderType == 1)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + unionCondition + " ";

                        //strSQL += "WHERE (" + fldName + " <= ( SELECT MIN(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                        strSQL += strWhere + "ORDER BY " + fldName + " DESC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + unionCondition + " ";

                        strSQL += "WHERE (" + fldName + " < ( SELECT MIN(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                    }
                }
                else // 异常处理
                {
                    throw new DataException("未指定任何排序类型。0升序,1为降序");
                }

                return strSQL;
            }



     

            /// <summary>
            /// 获取分页操作SQL语句(对于排序的字段必须建立索引)
            /// </summary>
            /// <param name="tblName">操作表名</param>
            /// <param name="fldName">操作索引字段名称</param>
            /// <param name="PageIndex">当前页</param>
            /// <param name="PageSize">每页显示记录数</param>
            /// <param name="rtnFields">返回字段集合,中间用逗号格开。返回全部用“*”</param>
            /// <param name="OrderType">排序方式(0升序,1为降序)</param>
            /// <param name="strWhere">检索的条件语句,不需要再加WHERE关键字</param>
            /// <returns></returns>
            public static string ConstructSplitSQL_TOP(string tblName,
                                                        string fldName,
                                                        int PageIndex,
                                                        int PageSize,
                                                        string rtnFields,
                                                        int OrderType,
                                                        string strWhere)
            {
                string strSQL = "";
                string strOldWhere = "";

                // 构造检索条件语句字符串
                if (strWhere != "")
                {
                    // 去除不合法的字符,防止SQL注入式攻击
                    strWhere = strWhere.Replace("'", "''");
                    strWhere = strWhere.Replace("--", "");
                    strWhere = strWhere.Replace(";", "");

                    strOldWhere = " AND " + strWhere + " ";

                    strWhere = " WHERE " + strWhere + " ";
                }

                // 升序操作
                if (OrderType == 0)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += strWhere + " ORDER BY " + fldName + " ASC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " > ( SELECT MAX(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                    }
                }
                // 降序操作
                else if (OrderType == 1)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += strWhere + " ORDER BY " + fldName + " DESC";
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " < ( SELECT MIN(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                    }
                }
                else // 异常处理
                {
                    throw new DataException("未指定任何排序类型。0升序,1为降序");
                }

                return strSQL;
            }






            /// <summary>
            /// 获取分页操作SQL语句(对于排序的字段必须建立索引)
            /// </summary>
            /// <param name="tblName">操作表名</param>
            /// <param name="fldName">操作索引字段名称</param>
            /// <param name="PageIndex">当前页</param>
            /// <param name="PageSize">每页显示记录数</param>
            /// <param name="rtnFields">返回字段集合,中间用逗号格开。返回全部用“*”</param>
            /// <param name="OrderType">排序方式(0升序,1为降序)</param>
            /// <param name="sort">排序表达式</param>
            /// <param name="strWhere">检索的条件语句,不需要再加WHERE关键字</param>
            /// <returns></returns>
            public static string ConstructSplitSQL_sort(string tblName,
                string fldName,
                int PageIndex,
                int PageSize,
                string rtnFields,
                int OrderType,
                string sort,
                string strWhere)
            {
                string strSQL = "";
                string strOldWhere = "";

                // 构造检索条件语句字符串
                if (strWhere != "")
                {
                    // 去除不合法的字符,防止SQL注入式攻击
                    strWhere = strWhere.Replace("'", "''");
                    strWhere = strWhere.Replace("--", "");
                    strWhere = strWhere.Replace(";", "");

                    strOldWhere = " AND " + strWhere + " ";

                    strWhere = " WHERE " + strWhere + " ";
                }

                if (sort != "") sort = " ORDER BY " + sort;

                // 升序操作
                if (OrderType == 0)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " >= ( SELECT MAX(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " ASC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " ASC";
                        strSQL += strWhere + sort;
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " > ( SELECT MAX(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + sort + " ) AS T )) ";

                        strSQL += strOldWhere + sort;
                    }
                }
                // 降序操作
                else if (OrderType == 1)
                {
                    if (PageIndex == 1)
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        //strSQL += "WHERE (" + fldName + " <= ( SELECT MIN(" + fldName + ") FROM (SELECT TOP 1 " + fldName + " FROM " + tblName + strWhere + " ORDER BY " + fldName + " DESC ) AS T )) ";

                        //strSQL += strOldWhere + "ORDER BY " + fldName + " DESC";
                        strSQL += strWhere + sort;
                    }
                    else
                    {
                        strSQL += "SELECT TOP " + PageSize + " " + rtnFields + " FROM " + tblName + " ";

                        strSQL += "WHERE (" + fldName + " < ( SELECT MIN(" + fldName + ") FROM (SELECT TOP " + ((PageIndex - 1) * PageSize) + " " + fldName + " FROM " + tblName + strWhere + sort + " ) AS T )) ";

                        strSQL += strOldWhere + sort;
                    }
                }
                else // 异常处理
                {
                    throw new DataException("未指定主索引排序类型。0升序,1为降序");
                }

                return strSQL;
            }
  • 相关阅读:
    Balanced Binary Tree
    Swap Nodes in Pairs
    Reverse Nodes in k-Group
    Reverse Linked List II
    Remove Nth Node From End of List
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Partition List
    Merge Two Sorted Lists
    【Yii2.0】1.2 Apache检查配置文件语法
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2238887.html
Copyright © 2011-2022 走看看