国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net中用DataReader高效率分頁

2024-07-10 12:41:45
字體:
來源:轉載
供稿:網友
分享一下兩種方式的分頁代碼
1.用DataReader分頁
代碼如下:
/// <summary>
/// PageList for DataReader
/// </summary>
/// <param name="connectionString"></param>
/// <param name="sql"></param>
/// <param name="pageSize"></param>
/// <param name="curPage"></param>
/// <param name="pageCount"></param>
/// <param name="count"></param>
/// <param name="cmdParms"></param>
/// <returns></returns>
public DataTable PageListReader(string connectionString, string sql, int pageSize, int curPage, out int pageCount, out int count, params DbParameter[] cmdParms)
{
int first = 0;
int last = 0;
int fieldCount = 0;
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = conn.CreateCommand();
PrepareCommand(cmd, conn, null, CommandType.Text, sql, cmdParms);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
DataTable dt = new DataTable();
fieldCount = reader.FieldCount;
for (int i = 0; i < fieldCount; i++)
{
DataColumn col = new DataColumn();
col.ColumnName = reader.GetName(i);
col.DataType = reader.GetFieldType(i);
dt.Columns.Add(col);
}
count = 0;
first = (curPage - 1) * pageSize+1;
last = curPage * pageSize;
while (reader.Read())
{
count++;
if (count >= first && last >= count)
{
DataRow r = dt.NewRow();
for (int i = 0; i < fieldCount; i++)
{
r[i] = reader[i];
}
dt.Rows.Add(r);
}
}
reader.Close();
pageCount = Convert.ToInt32(Math.Ceiling((double)count / (double)pageSize));
return dt;
}
}

2.用ROW_NUMBER()分頁
代碼如下:
/// <summary>
/// 分頁獲取數據(Sql Server 2005) for ROW_NUMBER()
/// </summary>
/// <param name="connectionString">數據庫鏈接</param>
/// <param name="sql">獲取數據集的Sql</param>
/// <param name="fldSort">排序字段,可以多個</param>
/// <param name="pageSize">每頁顯示多少條</param>
/// <param name="curPage">當前頁碼</param>
/// <param name="pageCount">總頁數</param>
/// <param name="count">總記錄數</param>
///<param name="cmdParms">DbParameter</param>
/// <returns>DataTable</returns>
public DataTable PageList(string connectionString, string sql, string fldSort, int pageSize, int curPage, out int pageCount, out int count, params DbParameter[] cmdParms)
{
StringBuilder strSql = new StringBuilder();
strSql.AppendFormat(@"SELECT count(0) from {0} as MyTableCount;
select * from (
SELECT ROW_NUMBER() OVER(order by {1}) RowNumber,*
from {0} mytable
) mytable2
where RowNumber between {2} and {3}"
, sql, fldSort, Convert.ToString((curPage - 1) * pageSize + 1), Convert.ToString((curPage * pageSize)));
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 措勤县| 肥乡县| 霍林郭勒市| 乌审旗| 彩票| 兴文县| 开江县| 乐清市| 酒泉市| 天门市| 永善县| 邹城市| 房产| 榕江县| 新晃| 郓城县| 常熟市| 调兵山市| 四子王旗| 涡阳县| 钦州市| 安康市| 台中县| 泾川县| 黑龙江省| 双城市| 许昌县| 广灵县| 乐昌市| 于田县| 林口县| 长顺县| 汕头市| 白玉县| 乌什县| 调兵山市| 从江县| 布尔津县| 宁津县| 巴中市| 沂水县|