您的位置:首页 > 数据库

构造获取分页操作SQL语句

2011-11-05 12:41 381 查看
构造获取分页操作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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: