zoukankan      html  css  js  c++  java
  • 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];
    }
  • 相关阅读:
    BasKet Note Pads-运用软件作笔记
    K3b-全功用的光盘烧录器材
    GShutDown:自动化关机小工具
    Xournal-条记抄写软件
    Metisse:相称酷的窗口操持器
    Realtek ALC268集成声卡驱动成绩在ubuntu下的处置责罚方案
    Wixi-桌面端 Wiki 运用
    Avant Window Navigator:Dock 类的窗口导航要领
    DDM:剪贴板办理及截取屏幕
    快速搞定Windows Xp Pro繁体中文版的简体支持
  • 原文地址:https://www.cnblogs.com/Mr0909/p/2044829.html
Copyright © 2011-2022 走看看