第一种,一次读出所有的数据,然后在客户端显示时提供分页
第二种,编写一个分页存储过程,对数据库查询时,即可分页查询
下面这个分页的存储过程在界面层怎么调用的,winform的
最好能有个例子,初次接触winform;先谢过各位;
CREATE PROCEDURE PageList
@tablename varchar(100),
@fields varchar(800),@condition varchar(8000),
@orderfield varchar(100),@ordertype varchar(100),
@pagesize int,@PageNo int
AS
declare @SQL varchar(8000)
if (@ordertype = 'Desc ')
begin
if (@condition = 'None ')
begin
if (@PageNo = 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + '
Order By '+ @orderfield + ' Desc '
end
if (@PageNo > 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + '
Where '+ @orderfield + ' <(Select Min( '+ @orderfield + ') From (Select Top '+ cast(@pagesize * (@PageNo - 1) as varchar(50)) + ' '+ @orderfield
+ ' From '+ @tablename + ' Order By '+ @orderfield + ' Desc) Temp) Order By '+ @orderfield + ' Desc '
end
end
else
begin
if (@PageNo = 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' '+ @condition + ' Order By '+ @orderfield + ' Desc '
end
if (@PageNo > 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' '+ @condition + ' And '+ @orderfield + ' <(Select Min( '+ @orderfield + ') From (Select Top '+ cast(@pagesize * (@PageNo - 1) as varchar(50)) + ' '+ @orderfield + ' From '+ @tablename + ' '+ @condition + ' Order By '+ @orderfield + ' Desc) Temp) Order By '+ @orderfield + ' Desc '
end
end
end
else if (@condition = 'None ')
begin
if (@PageNo = 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' Order By '+
@orderfield + ' Asc '
end
if (@PageNo > 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' Where '+
@orderfield + '> (Select Max( '+ @orderfield + ') From (Select Top '+ cast(@pagesize * (@PageNo - 1) as varchar(50)) + ' '+ @orderfield + ' From '+
@tablename + ' Order By '+ @orderfield + ' Asc) Temp) Order By '+ @orderfield + ' Asc '
end
end
else
begin
if (@PageNo = 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' '+
@condition + ' Order By '+ @orderfield + ' Asc '
end
if (@PageNo > 1)
begin
set @SQL= 'Select Top '+cast(@pagesize as varchar(50)) + ' '+ @fields + ' From '+ @tablename + ' '+
@condition + ' And '+ @orderfield + '> (Select Max( '+ @orderfield + ') From (Select Top '+ cast(@pagesize * (@PageNo - 1) as varchar(50)) + ' '+
@orderfield+ ' From '+ @tablename + ' '+ @condition + ' Order By '+ @orderfield + ' Asc) Temp) Order By '+ @orderfield + ' Asc '
end
end
exec (@SQL)
GO