gpt4 book ai didi

asp.net中用DataReader高效率分页

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章asp.net中用DataReader高效率分页由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

分享一下两种方式的分页代码  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)));  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];  }  。

最后此篇关于asp.net中用DataReader高效率分页的文章就讲到这里了,如果你想了解更多关于asp.net中用DataReader高效率分页的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com