说明:分页显示在实际业务中经常需要用到,其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. 设置MyBatis在控制台打印SQL语句

    在调试阶段,打印SQL会极大方便开发者.MyBatis有提供配置,只需要在MyBatis的配置文件mybatis-config.xml中<configuration>节点下,添加如下配置: ...

  2. Gitlab配置阿里邮件通知

    1. 在/etc/gitlab/gitlab.rb 中添加如下内容 $ vi /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true  git ...

  3. 通用Excel文件导出工具类

    1:Excel格式 2:ExcelUtil.java import java.io.ByteArrayOutputStream; import java.io.IOException; import ...

  4. 第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告

    一.实验题目,设计思路,实现方法 第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数) 设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法:2-7 运用 ...

  5. Linux cache 缓存过大

    linux cache 缓存过大 : 除重启服务 之外:直接释放内存方式之一: 修改配置释放cached内存: echo > /proc/sys/vm/drop_caches

  6. CF875F Royal Questions

    传送门 似乎可以按边权排序后二分图匹配 这里给一个复杂度稳定的算法 把一个公主能匹配的两个点连边,然后依次加边,每当加到一个大小为\(n\)的连通块中有\(n\)条边之后,这时形成了基环树,将这些边定 ...

  7. mysql 案例~ 分区表

    一 简介:今天来聊聊分区表的概念和维护二分区的优点:  1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度.  2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的 ...

  8. windows cmd相关操作

    一:文件夹1. 新建文件夹方式一:md[盘符:\][路径\]新目录例如:md c:\test\newtest 方式二:先使用cmd进入需要新建文件的根目录下,使用md或者mkdir 直接创建文件夹ne ...

  9. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  10. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...