说明:分页显示在实际业务中经常需要用到,其SQL语句分两种

1:分页显示SQL语句

--方法一:跳过多少行,选中多少行
--每页n条,选择第m页--n= m=
--select top(n) * from 表 where 主键 not in (select top(m-)*n 主键 from 表);
select * from UserInfo
select top() * from UserInfo where Empid not in (select top((-)*) EmpId from UserInfo);
--方法二,通过rowNumber函数,但是只能当作临时表
select * from(select * ,ROW_NUMBER() over (order by EmpId) as num from UserInfo) as T
where T.num between (-)*+ and *;
--over开窗函数的的另一个用法
select top() * ,AVG(StuAge) over() as 平均年龄 from UserInfo;

2:分页显示存储过程

--- 判断存储过程是否存在,如果存在则进行删除
if(exists(select * from sys.all_objects where name ='usp_UserInfo_GetPageData'))
drop proc usp_UserInfo_GetPageData
go --- 创建分页的存储过程
create procedure usp_UserInfo_GetPageData
@PageSize int,
@PageIndex int,
@TotalCount int output
as
BEGIN
select * from
(select * ,ROW_NUMBER() over (Order by EmpId) as rowNumber from UserInfo where Delflag = ) as temp
where temp.rowNumber between (@PageSize*(@PageIndex-)+) and (@PageSize*@PageIndex)
select @TotalCount = count() from UserInfo where Delflag =
END
--- 调用存储过程
declare @TotalCount int
exec usp_UserInfo_GetPageData ,,@TotalCount out
select @TotalCount

3:在c#中实现
  3.1,发现输出参数没有什么用,修改存储过程

ALTER procedure [dbo].[usp_UserInfo_GetPageData]
@PageSize int,
@PageIndex int
as
BEGIN
select * from
(select * ,ROW_NUMBER() over (Order by EmpId) as rowNumber from UserInfo where Delflag = ) as temp
where temp.rowNumber between (@PageSize*(@PageIndex-)+) and (@PageSize*@PageIndex)
END

  3.2 调用代码  

        #region //06-06 跳到某一页---存储过程
private void btnSkip_Click(object sender, EventArgs e)
{
//01-00 设置强类型数据源
List<UserInfo> userInfoList = new List<UserInfo>();
int pageIndex =int.Parse(txtSkipPage.Text);
using (SqlConnection conn = new SqlConnection( ConnStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "usp_UserInfo_GetPageData";
cmd.Parameters.Add(new SqlParameter("@PageSize", pageSize));
cmd.Parameters.Add(new SqlParameter("@PageIndex", pageIndex));
cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//数据封装
UserInfo userInfo = new UserInfo();
userInfo.EmpId = int.Parse(reader["EmpId"].ToString());
userInfo.Pwd = reader["Pwd"].ToString();
userInfo.StuName = reader["StuName"].ToString();
userInfo.StuAge = int.Parse(reader["StuAge"].ToString());
userInfo.Delflag = Char.Parse(reader["Delflag"].ToString());
userInfo.ClassNo = int.Parse(reader["ClassNo"] == DBNull.Value ? "-1" : reader["ClassNo"].ToString());
//添加到列表中
userInfoList.Add(userInfo);
}
}
}
}
//01-06 配置数据源
this.dataGridView1.DataSource = userInfoList;
} #endregion

步步为营-47-分页显示的SQL语句的更多相关文章

  1. MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

  2. MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

  3. pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口

    pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口 显示不可见字符:可以把空格.回车显示出来: 显示历史sql语句:ctrl+e ...

  4. 打开iBatis显示运行sql语句

    将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: log4j.logger.com.ibatis=DEBUG log4j.logger.com ...

  5. MySql实现分页查询的SQL,mysql实现分页查询的sql语句

    一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的 ...

  6. MySQL数据库实现分页查询的SQL语句写法!

    一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的 ...

  7. 分页查询的SQL语句

    select * from(select row_number() over (ORDER BY Id DESC) cyqrownum,t.* from [Table_TY_Member] t ) v ...

  8. 控制台打印Hibernate的SQL语句显示绑定参数值

    问题? 使用Hibernate提供的show_sql内置属性true只能输出类似于下面的SQL语句:Hibernate:   insert into user(name,password) value ...

  9. 转:JSP 分页显示数据 (Oracle)

    JSP 分页显示数据 (Oracle) 标签: Oracle分页JSP分页 2013-11-19 20:40 3598人阅读 评论(1) 收藏 举报  分类: Web(11)  版权声明:本文为博主原 ...

随机推荐

  1. 错误提示 nginx: [emerg] unknown directive "gzip_static"

    1.检查nginx配置文件错误提示如下: [root@server nginx]# /applications/nginx/sbin/nginx -t -c /applications/nginx/n ...

  2. PostgreSQL操作-psql基本命令

    一.建立数据库连接----------------接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 数据库名 之后会要求输入数据库密码 二.访问数据库 1.列举数据库:\l ...

  3. Hdu 5072 Coprime(容斥+同色三角形)

    原题链接 题意选出三个数,要求两两互质或是两两不互质.求有多少组这样的三个数. 分析 同色三角形n个点 每两个点连一条边(可以为红色或者黑色),求形成的三条边颜色相同的三角形的个数反面考虑这个问题,只 ...

  4. Python的自动补全

    1.编辑文件 tab.py   vi tab.py #!/usr/bin/env python # python startup file import sys import readline imp ...

  5. bootstrap modal垂直居中 (转)

    根据博友的经验,总结后请使用方法一就行了 一,修改bootstrap.js 源码 原来的: Modal.prototype.adjustDialog = function () { ].scrollH ...

  6. CSS进阶之SASS入门指南

    CSS进阶之SASS入门指南         随着跟着公司学习项目的前端的推进,越来越对好奇了许久的SASS垂涎欲滴,哈哈,可能这个词使用不当,没有关系,就是对SASS有一股神秘的爱!好了,闲话不多说 ...

  7. HDU4635 Strongly connected【强连通】

    题意: 给一个n个点的简单有向图,问最多能加多少条边使得该图仍然是简单有向图,且不是强连通图.简单有向图的定义为:没有重边,无自环. 强连通图的定义为:整个图缩点后就只有一个点,里面包含n个原点,也就 ...

  8. Maven打包编译找不到com.sun.crypto.provider.SunJCE类

    Maven配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...

  9. [SDOI2010]古代猪文 (欧拉,卢卡斯,中国剩余)

    [SDOI2010]古代猪文 \(solution:\) 这道题感觉综合性极强,用到了许多数论中的知识: 质因子,约数,组合数 欧拉定理 卢卡斯定理 中国剩余定理 首先我们读题,发现题目需要我们枚举k ...

  10. 【文件】使用word的xml模板生成.doc文件

    一.编辑模板 替换地方以变量标记如“案件编号”可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writeP ...