-- =============================================
-- Create date: <2012-9-12>
-- Description:    <高效分页存储过程,适用于Sql2005>
-- Notes:        <排序字段强烈建议建索引>-- sosoft.cnblogs.com
-- =============================================
create Procedure [dbo].[Page] @TableName varchar(50),        --表名@Fields varchar(1000) = '*',    --字段名(全部字段为*)@OrderField varchar(1000),        --排序字段(必须!支持多字段)@sqlWhere varchar(1000) = Null,--条件语句(不用加where)@pageSize int,                    --每页多少条记录@pageIndex int = 1 ,            --指定当前为第几页@TotalPage int output            --返回总页数
as
beginBegin Tran --开始事务Declare @sql nvarchar(4000);Declare @totalRecord int;    --计算总记录数if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'select @totalRecord = count(*) from ' + @TableNameelseset @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhereEXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数       --计算总数量select @TotalPage=@totalRecord--CEILING((@totalRecord+0.0)/@PageSize)+1if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName elseset @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere    --处理页数超出范围情况if @PageIndex<=0 Set @pageIndex = 1if @pageIndex>@TotalPageSet @pageIndex = @TotalPage--处理开始点和结束点Declare @StartRecord intDeclare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1set @EndRecord = @StartRecord + @pageSize - 1--继续合成sql语句set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' +  Convert(varchar(50),@EndRecord)--print @SqlExec(@Sql)--    print @totalRecord If @@Error <> 0BeginRollBack TranReturn -1EndElseBeginCommit Tran--print @totalRecord Return @totalRecord ---返回记录总数End   end

下面是C#函数代码

#region 获取分页的数据/// <summary>/// 获取分页的数据/// </summary>/// <param name="TblName">数据表名</param>/// <param name="Fields">要读取的字段</param>/// <param name="OrderField">排序字段</param>/// <param name="SqlWhere">查询条件</param>/// <param name="PageSize">每页显示多少条数据</param>/// <param name="pageIndex">当前页码</param>/// <param name="TotalPage">返回值,共有多少页</param>/// <returns></returns>        /// sosoft.cnblogs.compublic static DataSet PageData(string TblName, string Fields, string OrderField, string SqlWhere, int PageSize, int pageIndex, out int TotalPage){TotalPage = 1;DbObject db = new DbObject();string connString = db.ConnectionString;SqlConnection conn = new SqlConnection(connString);SqlCommand comm = new SqlCommand("Page", conn);comm.Parameters.Add(new SqlParameter("@TableName", SqlDbType.NVarChar, 100));comm.Parameters[0].Value = TblName;comm.Parameters.Add(new SqlParameter("@Fields", SqlDbType.NVarChar, 1000));comm.Parameters[1].Value = Fields;comm.Parameters.Add(new SqlParameter("@OrderField", SqlDbType.NVarChar, 1000));comm.Parameters[2].Value = OrderField;comm.Parameters.Add(new SqlParameter("@sqlWhere", SqlDbType.NVarChar, 1000));comm.Parameters[3].Value = SqlWhere;comm.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int));comm.Parameters[4].Value = PageSize;comm.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int));comm.Parameters[5].Value = pageIndex;comm.Parameters.Add(new SqlParameter("@TotalPage", SqlDbType.Int));comm.Parameters[6].Direction = ParameterDirection.Output;comm.CommandType = CommandType.StoredProcedure;SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);DataSet ds = new DataSet();dataAdapter.Fill(ds);TotalPage = (int)comm.Parameters[6].Value;           conn.Close();conn.Dispose();comm.Dispose();db.Dispose();return ds;}#endregion

转载于:https://www.cnblogs.com/sosoft/archive/2012/09/12/2682532.html

C#.NET SQLServer数据库分页函数,包含存储过程和C#代码相关推荐

  1. 数据库中函数和存储过程的区别总结

    数据库的使用中,经常用到函数和存储过程.都是为了实现某个sql功能,那么这两者有区别吗?都适用哪些场景?总结如下 总的来说函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少. ...

  2. mysql 中函数如何转存_mysql 导入导出数据库以及函数、存储过程 【转】

    MySQL常用导出数据命令: 1.mysql导出整个数据库 mysqldump -hhostname -uusername -ppassword databasename > backupfil ...

  3. mysql导出存储过程_mysql 导入导出数据库以及函数、存储过程

    一.mysql常用导出数据命令 1.mysql导出整个数据库 mysqldump -hhostname -uusername -ppassword databasename > backupfi ...

  4. 查询Sqlserver数据库死锁的一个存储过程

    使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉.利用sp_who_loc ...

  5. Oracle、MySql、SQLServer 数据库分页查询语句

    (一).** mysql的分页查询** mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句* firs ...

  6. Sqlserver 数据库分页查询(三种方式)

    --第一种分页:sqlserver 2000-sqlserver2005 --假设:每页显示5条, 当前页:1  则查询1-5 --不等于前5条的前5条 select top 5 * from  St ...

  7. cyq.data mysql_CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]

    在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式. 1:Access:集成:使用3次Top分页 2:MySql:集成,使用LimitN分页 3:Sqlite:集成,使用 ...

  8. oracle数据库中函数和存储过程中的区别

    一.函数必须有返回值,过程没有返回值: 二.函数可以单独执行,过程必须通过execute执行: 三.函数可以嵌入SQL中执行,过程不能. 可以将比较复杂的查询写成函数,然后在过程中调用. 转载于:ht ...

  9. 干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)

    01 T-SQL案例整理 已知有一个表:该表的字段有:id,name,date,gradeid,email,表名为table_name,按要求实现下面内容. 1.插入一条记录: insert into ...

最新文章

  1. 关于Delegate 和 MulticastDelegate的实现
  2. java异常标记_java异常机制
  3. 计算机基础在线阅读,TOP16[定稿]计算机基础教案(上下册).doc文档免费在线阅读...
  4. 定了!百度运维工程师非法挖矿获利 10 万、被判 3 年,如何避免面向监狱编程?...
  5. mysql主流版本2020_mysql高级2020.7.12-2020.7.13
  6. 比特币交易的脚本如何执行
  7. GPS坐标单位(度分秒)的换算方法
  8. 用C语言显示所有Ascll表
  9. 队列仿真一个银行叫号系统
  10. dom影像图形成数字地形图_航测相关知识点——鲲鹏智汇承接航测相关任务
  11. HealthKit框架简介
  12. 「实战」南京房价的秘密——准备篇
  13. c语言输入身高输出标准体重,项目2:就拿胖子说事---(4)计算出标准体重,输出体重状态(正常/超重/超轻)...
  14. pacman 查询_pacman (简体中文)
  15. 区块链交易正规平台有哪些?哪个区块链交易平台正规?
  16. python画图如何调整图例位置_python图例参数
  17. 什么是SSH 以及常见的ssh 功能
  18. excel 分组排名 countif
  19. ES插入date类型数据报错failed to parse field [case_date] of type [date]
  20. 2021-04-12-椭圆曲线加密

热门文章

  1. uap连接oracle,UAP环境初始化操作手册Oralce版.pdf
  2. 相同的树Python解法
  3. python学习-列表的操作(常用函数均会介绍)
  4. 解决由于操作顺序问题导致 hbase 一直处于启动无法关闭的问题
  5. oracle查询并更新数据库,oracle数据库查询和更新
  6. win8看不到win7局域网计算机名,实现Win7旗舰版与win8.1系统局域网里文件共享的设置方法【图】...
  7. oss客户端工具_干货 | 基于Go SDK操作京东云对象存储OSS的入门指南
  8. 矩阵的二范数_【专题】GAN(二)—— 目标函数的优化
  9. MySQL内连接方法_Mysql常用的几种join连接方式
  10. hive把字符串转换为时间_关于hive的时间转换