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

首頁 > 編程 > .NET > 正文

asp.net中用DataReader高效率分頁

2024-07-10 13:24:51
字體:
供稿:網(wǎng)友
分享一下兩種方式的分頁代碼
1.用DataReader分頁

復(fù)制代碼 代碼如下:


/// <summary>
/// PageList for DataReader
/// </summary>
/// <param></param>
/// <param></param>
/// <param></param>
/// <param></param>
/// <param></param>
/// <param></param>
/// <param></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()分頁

復(fù)制代碼 代碼如下:


/// <summary>
/// 分頁獲取數(shù)據(jù)(Sql Server 2005) for ROW_NUMBER()
/// </summary>
/// <param>數(shù)據(jù)庫鏈接</param>
/// <param>獲取數(shù)據(jù)集的Sql</param>
/// <param>排序字段,可以多個</param>
/// <param>每頁顯示多少條</param>
/// <param>當(dāng)前頁碼</param>
/// <param>總頁數(shù)</param>
/// <param>總記錄數(shù)</param>
///<param>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)));
DataSet ds = ExecuteQuery(connectionString, CommandType.Text, strSql.ToString(), cmdParms);
count = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
pageCount = Convert.ToInt32(Math.Ceiling((double)count / (double)pageSize));
return ds.Tables[1];
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 尖扎县| 仙游县| 武平县| 车险| 加查县| 大方县| 同心县| 寿光市| 阆中市| 榕江县| 平乡县| 台南市| 侯马市| 安泽县| 芒康县| 邵东县| 兴山县| 石林| 古丈县| 北安市| 巴塘县| 大安市| 简阳市| 斗六市| 甘谷县| 五大连池市| 聂拉木县| 丽水市| 石阡县| 招远市| 揭东县| 通山县| 十堰市| 虎林市| 邹城市| 河津市| 凤凰县| 饶平县| 望城县| 浦北县| 平塘县|