下面是存储过程(sqlserver2000下通过)
--最通用的分页存储过程
--获取指定页的数据
CREATEPROCEDUREPagination
@tblNamevarchar(255),--表名
@strGetFieldsvarchar(1000)='*',--需要返回的列
@fldNamevarchar(255)='',--排序的字段名
@PageSizeint=10,--页尺寸
@PageIndexint=1,--页码
@doCountbit=0,--返回记录总数,非0值则返回
@OrderTypebit=0,--设置排序类型,非0值则降序
@strWherevarchar(1500)=''--查询条件(注意:不要加where)
AS
declare@strSQLvarchar(5000)--主语句
declare@strTmpvarchar(110)--临时变量
declare@strOrdervarchar(400)--排序类型
if@doCount!=0
begin
if@strWhere!=''
set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where'+@strWhere
else
set@strSQL='selectcount(*)asTotalfrom['+@tblName+']'
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都
--是@doCount为0的情况
else
begin
if@OrderType!=0
begin
set@strTmp='<(selectmin'
set@strOrder='orderby['+@fldName+']desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set@strTmp='>(selectmax'
set@strOrder='orderby['+@fldName+']asc'
end
if@PageIndex=1
begin
if@strWhere!=''
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from['+@tblName+']where'+@strWhere+''+@strOrder
else
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from['+@tblName+']'+@strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from['+@tblName+']where['+@fldName+']'+@strTmp+'(['+@fldName+'])
from(selecttop'+str((@PageIndex-1)*@PageSize)+'['+@fldName+']from['+@tblName+']'+@strOrder+')astblTmp)'+@strOrder
if@strWhere!=''
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+'from['+@tblName+']where['+@fldName+']'+@strTmp+'(['+@fldName+'])from(selecttop'+str((@PageIndex-1)*@PageSize)+'['+@fldName+']
from['+@tblName+']where'+@strWhere+''+@strOrder+')astblTmp)and'+@strWhere+''+@strOrder
end
end
exec(@strSQL)
GO
下面是C#的代码
usingSystem.Data;
usingSystem.Data.SqlClient;
usingMicrosoft.ApplicationBlocks.Data;
usingSystem.Web;
usingSystem.Web.UI;
namespaceRssLayer.PageHelper
{
/**////<summary>
///分页类PagerHelper的摘要说明。
///</summary>
publicclassPagerHelper
{
privatestringconnectionString;
publicPagerHelper(stringtblname,stringsortname,booldocount,stringconnectionString)
{
this.tblName=tblname;
this.fldName=sortname;
this.connectionString=connectionString;
this.docount=docount;
}
publicPagerHelper(stringtblname,booldocount,
stringstrGetFields,stringfldName,intpagesize,
intpageindex,boolordertype,stringstrwhere,stringconnectionString
)
{
this.tblName=tblname;
this.docount=docount;
this.strGetFields=strGetFields;
this.fldName=fldName;
this.pagesize=pagesize;
this.pageindex=pageindex;
this.ordertype=ordertype;
this.strwhere=strwhere;
this.connectionString=connectionString;
}
/**////<summary>
///得到记录集的构造函数
///</summary>
///<paramname="tblname"></param>
///<paramname="strwhere"></param>
///<paramname="connectionString"></param>
publicPagerHelper(stringtblname,stringstrwhere,stringconnectionString)
{
this.tblName=tblname;
this.strwhere=strwhere;
this.docount=true;
this.connectionString=connectionString;
}
privatestringtblName;
publicstringTblName
{
get{returntblName;}
set{tblName=value;}
}
privatestringstrGetFields="*";
publicstringStrGetFields
</span
分享到:
相关推荐
asp.net 用存储过程实现分页(附代码)
asp.net分页存储过程汇总 asp.net分页存储过程汇总 asp.net分页存储过程汇总
asp.net分页,存储过程,gridview分页,datagrid分页
上周花一下午时间写了个 asp.net SQL存储过程分页.给大家分享下,如果写得不好请大家指出一起讨论哈,小弟第一次写文章哈..谢谢.
功能说明 写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,... 效率不是很高,如有高人写出很厉害的分页存储过程,希望您与大家分享。
Asp.net 高效的分页存储过程,已通过测试.
数据库在文件夹DataBase下。 自己附加。或者执行数据文件(因数据库不同) 自己去改下Web.config连接字符串
asp.net/sql2005 多功能分页(存储过程)
ASP.NET分页存储过程实例(非常不错哦,有近20种分页样式,可根据自己的需要修改其中的样式)。
常用存储过程分页数据库SQL代码和ASP.NET代码文件
ASP.NET用存储过程自定义分页技术详解,和大家来分享一下
这是自己研发的用户控件,功能很强大,能对各种控件进行分页。ASP.NET超强的存储过程万能真分页,这是一个调用存储过程的很强悍的真分页。对ASP.NET的同学很有帮助的
很全很强大的分页体系,,都包含了 asp.net分页控件 包含db层 ui层 存储过程 的代码
asp.net 分页存储过程实例 基本通用, 可下载根据自己的实际情况进行修改,
asp.net中数据库分页,存储过程查询,适用性强,适合各种数据库,只要传入表名及其他相关条件等就可以很轻松的实现分页查询,提高效率。
因此,在 asp.net中,分页很简单,但是默认的DataGrid分页事件会从数据库中把所 有的记录全部读出来放到asp.net web应用程序中。当你的数据在一百万以上的时候,这将引起 严重的性能问题(如果你不相信,你可以在你...
SETCount的存储过程分页,支持Sorting