• DataReader 分页和rownumber


    View Code
    /// 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];
    }
  • 相关阅读:
    搭建php环境时解决jpeg6 make: ./libtool:命令未找到
    configure: error: zlib not installed
    南京呼叫中心防火墙配置(备份)
    检查Linux Bash安全漏洞以及各环境修复解决方法
    Linux 内核升级步骤
    CentOS 7没有ifconfig命令处理
    linux kickstart 自动安装
    red hat Linux 使用CentOS yum源更新
    -bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录
    linux LNMP自动安装脚本
  • 原文地址:https://www.cnblogs.com/Mr0909/p/2044829.html
Copyright © 2020-2023  润新知