学习篇:sql语句分页

今天,折腾了一下分页,做的是简单的sql语句分页。别的分页,像存储过程啥的,以后会慢慢学习。

sql语句分页核心代码不过就是:

select * from
(select row_number() over(ordery by id) as num,* from A) as t
where num>10 && num <=20

自己手敲了一下,高手看见指点一下吧,为什么非要这么来写啊。

然后,我自己做的这个项目是三层架构,所以说:我还是很专业的是吧。

我写三层,喜欢从DAL层开始写,所以,下面我就从DAL层开始说起了。

1.首先DAL层中,根据需要查询出来需要展示的数据(也就是一页)。

public DataSet GetPageData(int start, int end)
        {
            string sql = "select * from (select row_number() over(order by id) as num,* from books ) as t where num >= @start and num <= @end";
           
            SqlParameter[] pams = {
                                    new SqlParameter("@start",start),
                                    new SqlParameter("@end",end),
                                    
                                  };
            return DbHelperSQL.Query(sql, pams);
        }

当然,想要分页必须要知道总条数吧,所以,就有了下面这个方法了。

 public int GetRecordCount()
        {
            string sql = "select count(1) from Books";
            return Convert.ToInt32(DbHelperSQL.GetSingle(sql));
        }

 

把分类,排序啥的去掉了,只剩下实实在在的分页了。

2.然后就是BLL层,主要是逻辑方面的东西。

public List<Model.Books> GetPageList(int pageNum, int pageSize)
        {
            //计算出每页开始的 num
            int start = (pageNum - 1) * pageSize + 1;
            //计算出此页结束的 num
            int end = pageNum * pageSize;
            DataSet ds = dal.GetPageData(start, end);
            return DataTableToList(ds.Tables[0]); //这个方法是代码生成器生成的方法。
        }
public int GetPageCount(int pageSize)
        {
            int recordCount = dal.GetRecordCount();
            int pageCount = Convert.ToInt32(Math.Ceiling((double)recordCount / pageSize));
            return pageCount;
        }

 

3.UI层,即将闪亮登场了。用的是Repeater服务端控件来绑定数据的。所以,请看....

 private void BindRepeater(int pageNum)
        {
            BLL.Books bll = new BLL.Books();this.Repeater1.DataSource = bll.GetPageList(pageNum, 10);
            this.Repeater1.DataBind();
        }

把上面的代码在page_load里面调用下,就OK了.....

呵呵~~~!

A:BZ骗人,这叫啥子分页.....太浪费感情了.....

连个简单的分页标签都木有。 让我再后台改代码实现分页吗....

哎~,太浪费感情了....

2月18号:那谁...这事你怎么看?

那谁:请BZ明断~!

2月18号:抛砖引玉,抛砖引玉....额,哈哈。。哈哈。。

 

posted @ 2012-10-24 00:23  2月18号  阅读(341)  评论(1编辑  收藏  举报