多语言展示
当前在线:472今日阅读:84今日分享:32

如何使用存储过程来实现分页功能

网站的关键是数据内容,如何显示数据内容在我们的网站是非常关键的,分页功能作为展示我们网站数据内容是非常有帮助的。分页功能就是显示用户想要看到的部分数据,因为显示全部数据在一个页面不现实也不利于网页加载,当用户选择另一个页时再显示部分数据。当然分页功能的实现有很多方式,这里只是分享通过存储过程来实现分页功能。
工具/原料
1

数据库管理工具

2

测试数据材料

方法/步骤
1

首先要知道分页显示数据需要哪些参数,包括总共有多少条数据的参数dataCount,每页显示多少条数据的参数pageSize,总共有多少页数的参数pageCount,当前页数(页码)的参数pageIndex。

2

获取总共多少条数据的参数dataCount非常简单,执行Sql语句“select count(*) from test”就可以拿到dataCount值了,还有一个非常简单的参数就是当前页数(页码)pageIndex默认就是1。

3

每页显示多少条数据根据网页显示量来设定,假设网页一页显示10,那么pageSize就是10,有dataCount和pageSize值,总共有多少页数也就可以获得了,pageCount=dataCount/pageSize,通过这样计算页数方式获得的数据量一定小于实际的页数,这里就需要用到取顶函数pageCount=1.0*dataCount/pageSize。

4

关键就是如何通过准备的参数获取数据,还需要用到Sql Server2005及以上版本的数据库才有的给数据库表数据查询时增加序号的函数,这是因为我们存放在数据库的数据没有连续自动增长的编号,借助函数row_number()可以通过按某个字段排序设定序号,方便获取数据准确。比较两条Sql语句“select * from test”和“select *,row_number() over(order by Test1) as '序号' from Test”查询数据进行比较就会发现在查询结果中会增加一个通过字段Test1排序而产生的一个序号,并且这个序号是连续自动增长的。

5

接下来创建存储过程,指定参数就可以了。create proc P_Test--创建存储过程P_Test@pageSize int,--每页数据条数@pageIndex int,--当前页数(页码)@pageCount int output--总的页数,因为需要显示页数,因此是个输出参数asdeclare @datacount int--总数据条数select @datacount=count(*) from test--获得总数据条数值并赋给参数set @pageCount=ceiling(1.0*@datacount/@pageSize)--获得总页数,并赋给参数--接下来是获得指定页数据select * from(select *,row_number() over(order by Test1) as num from test) as tempwhere num between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex

注意事项

明白原理过程就更好掌控

推荐信息