分页存储过程及.NET代码
2008-06-11 09:37
363 查看
/* author:修改schema,原作tag description:通用分页存储过程 date:2006/09/22 */ ALTERPROCEDUREdbo.SPY_Page @tblNamevarchar(255),--表名 @strGetFieldsvarchar(1000),--需要返回的列 @fldNamevarchar(255),--排序的字段名 @PageSizeint,--页尺寸 @PageIndexint,--页码 @doCountbit,--返回记录总数,非0值则返回,查询表的记录总数 @OrderTypebit,--设置排序类型,非0值则降序 @strWherevarchar(1500)--查询条件(注意:不要加where) AS declare@strSQLvarchar(5000)--主语句 declare@strTmpvarchar(110)--临时变量 declare@strOrdervarchar(400)--排序类型 if@doCount!=0 begin if@strWhere!='SCHEMA' 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!='SCHEMA' 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!='SCHEMA' 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) RETURN
.NET代码
privateconstStringm_tableName="EnterpriseList";//表名
privateconstStringm_getFields="*";//获取的字段
privateconstStringm_orderField="AddDate";//默认排序字段
privateconstBooleanm_doCount=false;//不统计总记录数
privateconstBooleanm_orderType=true;//降序
privateconstStringm_strWhere="SCHEMA";
#regionSPY_EnterpriseList_get_bysql
///
///根据条件来访列表,分页
///
///每页记录数
///页索引
///条件语句
///返回eventdirOR的集合
publicListSPY_EnterpriseList_get_bysql(Int32pageSize,Int32pageIndex,StringstrWhere)
{
IDataReaderdr=null;
try
{
Databasedb=DatabaseFactory.CreateDatabase();
Object[]paras=sql.getSqlParaToPage(m_tableName,m_getFields,m_orderField,pageSize,pageIndex,m_doCount,m_orderType,strWhere);
dr=db.ExecuteReader("SPY_Page",paras);
Listobj=newList();
while(dr.Read())
{
obj.Add(newEnterpriseList(dr));
}
returnobj;
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
finally
{
#regionfinally
if(dr!=null)
dr.Dispose();
#endregion
}
}
#endregion
#regionSPY_EnterpriseList_get_bysqlTocount
///
///根据条件来访列表,返回记录个数
///
///每页记录数
///页索引
///条件语句
///返回整形值
publicInt32SPY_EnterpriseList_get_bysqlTocount(Int32pageSize,Int32pageIndex,StringstrWhere)
{
IDataReaderdr=null;
try
{
Databasedb=DatabaseFactory.CreateDatabase();
//参数中的true表示统计总个数
Object[]paras=sql.getSqlParaToPage(m_tableName,m_getFields,m_orderField,pageSize,pageIndex,true,m_orderType,strWhere);
dr=db.ExecuteReader("SPY_Page",paras);
while(dr.Read())
{
//返回记录总个数
returnConvert.ToInt32(dr["Total"]);
}
return0;
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
finally
{
#regionfinally
if(dr!=null)
dr.Dispose();
#endregion
}
}
#endregion
相关文章推荐
- asp 存储过程分页代码第1/2页
- 通用高效分页存储过程代码
- 存储过程分页实例(含有分页代码asp)
- 存储过程分页代码
- SQL Server 分页查询存储过程代码
- 通用高效分页存储过程代码
- 通用高效分页存储过程代码
- 三种SQL分页查询的存储过程代码
- Discuz!NT 代码阅读笔记(8.1)--DNT的几个分页存储过程解析
- sql 存储过程分页代码 支持亿万庞大数据量
- asp.net SQL Server 存储过程分页及代码调用
- sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
- sql server中千万数量级分页存储过程代码
- ORACLE通用分页存储过程及.NET调用方式
- asp.net利用存储过程分页代码
- 分页存储过程的应用简单示例随笔(附所有代码)
- asp 存储过程分页代码第1/2页
- vs 2005存储过程分页主要代码