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;
            }
  • 相关阅读:
    散列算法
    【转】认证 (authentication) 和授权 (authorization) 的区别
    Filter和interceptor比较
    【转】深入理解Spring的两大特征(IOC和AOP)
    [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别
    线程同步
    Java容器
    进程间交互的几种方式
    JSP和Servlet的区别
    IPC介绍
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2238887.html
Copyright © 2011-2022 走看看