62,264
社区成员
发帖
与我相关
我的任务
分享
ALTER PROCEDURE PagingHelper
@tableField varchar(200) = '*', --搜索表的字段
@tableName varchar(50), --搜索表名
@selectWhere varchar(500), --搜索条件
@selectID varchar(20), --表主键字段名,比如ID
@selectOrder varchar(200), --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,
--比如:order by CreateDate desc
@pageNo int = 1, --页号
@pageSize int = 2, --每页显示记录数
@totalCount int OUTPUT --总记录数,输出参数
AS
declare @tmpSelect varchar(600)
declare @tmp varchar(600)
set @tmpSelect = 'select @totalCount = count(*) from '+@tableName
exec sp_executesql @tmpSelect,
N'@totalCount int output', --执行sql语句,返回总记录数
@totalCount output
if(@totalCount = 0)
return 0
/* 判断页数是否正确 */
if((@pageNo -1) * @pageSize > @totalCount)
return (-1)
set @tmpSelect = 'select top ' +str(@pageSize)+ ' ' +@tableField+ ' from ' +@tableName+ ' where '
+ @selectID + ' not in (select top '+str((@pageNo-1)*@pageSize)+ ' ' +@selectID+ ' from ' +@tableName+
' '+@selectOrder+') '+@selectOrder
execute sp_executesql @tmpSelect
return(@@rowcount)
public DataView SelectAllNews(int pageNo, int pageSize, ref int totalCount) {
ConfigManager cm = new ConfigManager();
SqlDataAdapter sda = new SqlDataAdapter("PagingHelper", cm.DalConnectionString);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@tableField", SqlDbType.VarChar, 200).Value = "*";
sda.SelectCommand.Parameters.Add("@tableName", SqlDbType.VarChar, 50).Value = "NewsItem";
//da.SelectCommand.Parameters.Add("@SelectWhere", SqlDbType.VarChar, 500).Value = "where d=1";
sda.SelectCommand.Parameters.Add("@selectID",SqlDbType.VarChar,20).Value="NewID";
sda.SelectCommand.Parameters.Add("@selectOrder",SqlDbType.VarChar,200).Value = "order by CreateDate desc";
sda.SelectCommand.Parameters.Add("@pageNo",SqlDbType.Int).Value = pageNo;
sda.SelectCommand.Parameters.Add("@pageSize", SqlDbType.Int).Value = pageSize;
//总记录数
sda.SelectCommand.Parameters.Add("@totalCount", SqlDbType.Int).Direction = ParameterDirection.Output;
//当前页的记录数
//sda.SelectCommand.Parameters.Add("CurrentPageCount", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
totalCount = Convert.ToInt32(sda.SelectCommand.Parameters.Add("@totalCount", SqlDbType.Int).Value);
DataSet ds = new DataSet();
sda.Fill(ds, "sel_news");
DataView dv = ds.Tables["sel_news"].DefaultView;
return dv;
}过程 'PagingHelper' 需要参数 '@totalCount',但未提供该参数。
CREATE PROCEDURE [dbo].[uspPageResult]
-- 获得某一页的数据 --
@tabName varchar(1000), --需要查看的表名 (即 from table_name)
@showColumn varchar(1000) , --需要得到的字段 (即 column1,column2,)
@ascColumn varchar(100) , --排序的字段名 (即 order by column asc/desc)
@bitOrderType bit = 0, --排序的类型 (0为升序,1为降序)
@strCondition varchar(4000) , --查询条件 (即 where condition) 不用加where关键字
@currPage int = 1 output, --当前页页码 (即Top currPage)
@pageSize int = 10, --分页大小
@intcount int output --返回总数
AS
BEGIN
-- 该存储过程需要用到的几个变量 --
DECLARE @strTemp varchar(1000)
DECLARE @strSql varchar(6000) --该存储过程最后执行的语句
DECLARE @strOrderType varchar(1000) --排序类型语句 (order by column asc或者order by column desc)
BEGIN
set nocount on
declare @sql nvarchar(4000);
set @sql=N'select @intcount=count(*) from '+ @tabname +' where '+@strcondition;
exec sp_executesql @sql,N'@intcount int output ',@intcount output
declare @pageCount int;
set @pageCount=(@intcount-1)/@pagesize+1;
if(@currPage>@pageCount)
SET @currPage=@pageCount
IF @bitOrderType = 1 -- bitOrderType=1即执行降序
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC'
SET @strTemp = '<(SELECT min'
END
ELSE
BEGIN
SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC'
SET @strTemp = '>(SELECT max'
END
IF @currPage = 1 -- 如果是第一页
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+
' WHERE '+@strCondition+@strOrderType
ELSE -- 其他页
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+
' WHERE '+@strCondition+' AND '+@ascColumn+@strTemp+'('+@ascColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+
' '+@ascColumn+' FROM '+@tabName+' WHERE '+@strCondition+@strOrderType+') AS TabTemp)'+@strOrderType
END
EXEC (@strSql)
END
ALTER PROCEDURE PagingHelper
@tableField varchar(200) = '*', --搜索表的字段
@tableName varchar(50) = '', --搜索表名
@selectWhere varchar(500) = '', --搜索条件
@selectID varchar(20)='', --表主键字段名,比如ID
@selectOrder varchar(200)='', --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,
--比如:order by CreateDate desc
@pageNo int = 1, --页号
@pageSize int = 1, --每页显示记录数
@totalCount int OUTPUT --总记录数,输出参数
AS
declare @tmpSelect nvarchar(600)
declare @tmp nvarchar(600)
set @tmpSelect = 'select '+ str(@totalCount)+'=count(*) from ' +@tableName
--exec sp_executesql @tmpSelect,
--N'@totalCount int output', --执行sql语句,返回总记录数
--@totalCount OUTPUT
if(@totalCount = 0)
return 0
/* 判断页数是否正确 */
if((@pageNo -1) * @pageSize > @totalCount)
return (-1)
set @tmpSelect = 'select top ' +str(@pageSize)+' ' +@tableField+' from ' +@tableName+' where ' +@selectID+ ' not in (select top ' +str((@pageNo-1)*@pageSize)+' ' +str(@selectID)+' from '+@tableName+
' '+@selectOrder+') ' + @selectOrder
--execute sp_executesql @tmpSelect
return(@@rowcount)public DataView SelectAllNews(int pageNo, int pageSize, ref int totalCount) {
ConfigManager cm = new ConfigManager();
SqlDataAdapter sda = new SqlDataAdapter("PagingHelper", cm.DalConnectionString);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@tableField", SqlDbType.VarChar, 200).Value = "*";
sda.SelectCommand.Parameters.Add("@tableName", SqlDbType.VarChar, 50).Value = "NewsItem";
//da.SelectCommand.Parameters.Add("@SelectWhere", SqlDbType.VarChar, 500).Value = "where d=1";
sda.SelectCommand.Parameters.Add("@selectID",SqlDbType.VarChar,20).Value="NewID";
sda.SelectCommand.Parameters.Add("@selectOrder",SqlDbType.VarChar,200).Value = "order by CreateDate desc";
sda.SelectCommand.Parameters.Add("@pageNo",SqlDbType.Int).Value = pageNo;
sda.SelectCommand.Parameters.Add("@pageSize", SqlDbType.Int).Value = pageSize;
//总记录数
sda.SelectCommand.Parameters.Add("@totalCount", SqlDbType.Int).Direction = ParameterDirection.Output;
//当前页的记录数
//sda.SelectCommand.Parameters.Add("CurrentPageCount", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
totalCount = Convert.ToInt32(sda.SelectCommand.Parameters["@totalCount"].Value);
DataSet ds = new DataSet();
try
{
sda.Fill(ds, "sel_news");
DataView dv = ds.Tables["sel_news"].DefaultView;
return dv;
}
catch (Exception e) {
throw new Exception(e.Message);
}
}
帮顶
declare @tmpSelect nvarchar(600)
declare @tmp varchar(600)
set @tmpSelect = n'select @totalCount= count(*) from '+@tableName
exec sp_executesql @tmpSelect,N'@totalCount int output ',@totalCount output
--'@totalCount int output', --执行sql语句,返回总记录数
--@totalCount OUTPUT
ALTER PROCEDURE PagingHelper
@tableField varchar(200) = '*', --搜索表的字段
@tableName varchar(50), --搜索表名
@selectWhere varchar(500) = '', --搜索条件
@selectID varchar(20), --表主键字段名,比如ID
@selectOrder varchar(200), --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,
--比如:order by CreateDate desc
@pageNo int = 1, --页号
@pageSize int = 2, --每页显示记录数
@totalCount int = 0 OUTPUT --总记录数,输出参数
AS
declare @tmpSelect varchar(600)
declare @tmp varchar(600)
set @tmpSelect = 'select ' +@totalCount+' = count(*) from '+@tableName
exec sp_executesql @tmpSelect
--'@totalCount int output', --执行sql语句,返回总记录数
--@totalCount OUTPUT
if(@totalCount = 0)
return 0
/* 判断页数是否正确 */
if((@pageNo -1) * @pageSize > @totalCount)
return (-1)
set @tmpSelect = 'select top ' +str(@pageSize)+ ' ' +@tableField+ ' from ' +@tableName+ ' where '
+ @selectID + ' not in (select top '+str((@pageNo-1)*@pageSize)+ ' ' +@selectID+ ' from ' +@tableName+
' '+@selectOrder+') '+@selectOrder
execute sp_executesql @tmpSelect
return(@@rowcount)
public DataView SelectAllNews(int pageNo, int pageSize, ref int totalCount) {
ConfigManager cm = new ConfigManager();
SqlDataAdapter sda = new SqlDataAdapter("PagingHelper", cm.DalConnectionString);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@tableField", SqlDbType.VarChar, 200).Value = "*";
sda.SelectCommand.Parameters.Add("@tableName", SqlDbType.VarChar, 50).Value = "NewsItem";
//da.SelectCommand.Parameters.Add("@SelectWhere", SqlDbType.VarChar, 500).Value = "where d=1";
sda.SelectCommand.Parameters.Add("@selectID",SqlDbType.VarChar,20).Value="NewID";
sda.SelectCommand.Parameters.Add("@selectOrder",SqlDbType.VarChar,200).Value = "order by CreateDate desc";
sda.SelectCommand.Parameters.Add("@pageNo",SqlDbType.Int).Value = pageNo;
sda.SelectCommand.Parameters.Add("@pageSize", SqlDbType.Int).Value = pageSize;
//总记录数
sda.SelectCommand.Parameters.Add("@totalCount", SqlDbType.Int).Direction = ParameterDirection.Output;
//当前页的记录数
//sda.SelectCommand.Parameters.Add("CurrentPageCount", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
totalCount = Convert.ToInt32(sda.SelectCommand.Parameters["@totalCount"].Value);
DataSet ds = new DataSet();
sda.Fill(ds, "sel_news");
DataView dv = ds.Tables["sel_news"].DefaultView;
return dv;
}