C#连接MS SQL 2005,一张表中有近百万数据,
想查询显示,怎样分页显示呢?

解决方案 »

  1.   

    用EF 或 Linq to sql可以自动实现分页,编码和维护都很方便。
      

  2.   

    另外一种选择就是通过inline sql 或stored procedure来实现,但是需要手工些支持分页的sql 语句,也是可行的,但可读性和维护性差一些。
      

  3.   

    用aspnetpager控件,进行真分页参考示例:
    <asp:GridView ID="GridView1" runat="server" EnableViewState="false">
    </asp:GridView>
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10" OnPageChanging="AspNetPager1_PageChanging">
    </webdiyer:AspNetPager>
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    DisplayData(AspNetPager1.PageSize, 1);
    }
    }

    private void DisplayData(int pageSize, int pageIndex)
    {
    string sqlStr = "select count(*) from 测试";
    SqlData md = new SqlData();
    AspNetPager1.RecordCount = (int)md.ExecuteScalar(sqlStr);
    sqlStr = String.Format("select top {0} * from 测试 where 学号 not in (select top {1} 学号 from 测试)", pageSize.ToString(), ((pageIndex - 1) * pageSize).ToString());
    md.SetCommandText(sqlStr);
    DataTable dt = md.FillDataTable();
    md.Close();
    GridView1.DataSource = dt;
    GridView1.DataBind();
    } protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
    {
    AspNetPager1.CurrentPageIndex = e.NewPageIndex;
    DisplayData(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex);
    }
      

  4.   

    用已分区表
    SQL Server 2005 已分区表的应用