经典分页

web页面一次一般显示10行数据为好,但往往很多时候我们从数据库中查出来上万条数据,这个时候我们要在上万条数据中显示10条,那就必须分页。分页的第一问题就是分页数据。

www.mrw3c.com,专业的网页设计知识库。

分页数据

分页的数据分为两种,一种是在数据库中只取需要的10条数据,这也是性能提升的标致,一种是全盘拖出,放到程序缓存中再用程序来分页。

S(NNnH!r,PSRJW!ALS/7

第一种取数据方式:

 
 
  1. select top [PageSize] * from [Table] where id not in( select top [CurrentPage-1] [PageSize] id from [Table] )

用于access,mssql当中,另一种是存储过程,这也是最快的取数据方式

 
 
  1. ALTER PROCEDURE GetAuthors
  2. @PageIndex int,
  3. @PageSize int
  4. AS
  5. BEGIN
  6. -- Set the page bounds
  7. DECLARE @PageLowerBound int
  8. DECLARE @PageUpperBound int
  9. DECLARE @TotalRecords int
  10. SET @PageLowerBound = @PageSize * (@PageIndex-1)
  11. SET @PageUpperBound = @PageSize*@PageIndex-1
  12. -- Create a temp table TO store the select results
  13. CREATE TABLE #PageIndexForAuthors
  14. (
  15. IndexId int IDENTITY (0, 1) NOT NULL,
  16. au_id varchar(11),
  17. au_lname varchar(40),
  18. au_fname varchar(20),
  19. phone char(12),
  20. address varchar(40),
  21. city varchar(20),
  22. state char(2),
  23. zip char(5),
  24. contract bit
  25. )
  26. -- Insert into our temp table
  27. INSERT INTO #PageIndexForAuthors
  28. (au_id ,au_lname,au_fname,phone,address,city,state,zip,contract)
  29. SELECT *
  30. FROM authors
  31. ORDER BY au_id
  32. SELECT @TotalRecords = @@ROWCOUNT
  33. SELECT * FROM #PageIndexForAuthors
  34. WHERE IndexId between @PageLowerBound AND @PageUpperBound
  35. ORDER BY au_id
  36. RETURN @TotalRecords
  37. END
  38. GO
S(NNnH!r,PSRJW!ALS/7

上面这段存储过程是仿微软的写法,微软在Membership里面采用也是这存储过程分页。

其他数据库取数据也有不同,sql2005有行号函数,oracle也有,mysql就更好取了limit 10,20 mOHLqMTrjw[n$

第二种就是全部数据取出来再做缓存,数据用程序处理,.ado/jdbc有定位法,Adapter.Fill()用这个填充需要的数据,GridView自定义分页事件就是使用这个,看到很多自定义控件也使用这种方式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值