/// <summary>
/// 生成取得記錄總數(shù)的語句
/// </summary>
/// <param name="sql">原查詢語句</param>
/// <returns>取得記錄總數(shù)的語句</returns>
private string MakeRecordCountsSql(string sql)
{
string sqlGetRecordCounts = "select Count(*) from (" + sql + ") as TempTable";
return sqlGetRecordCounts;
}
/// <summary>
/// 生成分頁查詢語句
/// </summary>
/// <param name="sql">原查詢語句</param>
/// <param name="orderField">用于分頁排序的字段</param>
/// <param name="pageNumber">頁碼</param>
/// <param name="pageSize">頁面記錄數(shù)量</param>
/// <param name="recordCounts">記錄總數(shù)</param>
/// <param name="pageCounts">頁面總數(shù)</param>
/// <returns>分頁查詢語句</returns>
private string MakePagingSql(string sql, string orderField, int pageNumber, int pageSize, int recordCounts, out int pageCounts)
{
// 計算頁面數(shù)量
if (Convert.ToInt32(pageNumber) < 1) pageNumber = 1;
if (Convert.ToInt32(pageSize) < 1) pageSize = 1;
pageCounts = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(recordCounts) / Convert.ToDouble(pageSize)));
string sqlQuery = "";
if (pageNumber == 1)
{
sqlQuery = "select top " + pageSize + " * from (" + sql + ") as TempTable order by " + orderField + " desc";
}
else
{
sqlQuery = "select top " + pageSize + " * from (" + sql + ") as TempTable where " + orderField + " < (select min(" + orderField + ") as MinID from ( select top " + (pageNumber - 1) * pageSize + " * from (" + sql + ") as MaxTempTable order by " + orderField + " desc) as MinTempTable) order by " + orderField + " desc";
}
return sqlQuery;
}