步步为营-47-分页显示的SQL语句
说明:分页显示在实际业务中经常需要用到,其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语句的更多相关文章
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口
pl/sql developer 快捷操作: 显示不可见字符 显示历史sql语句 拷贝整个sql窗口的语句至新的sql窗口 显示不可见字符:可以把空格.回车显示出来: 显示历史sql语句:ctrl+e ...
- 打开iBatis显示运行sql语句
将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: log4j.logger.com.ibatis=DEBUG log4j.logger.com ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的 ...
- MySQL数据库实现分页查询的SQL语句写法!
一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的 ...
- 分页查询的SQL语句
select * from(select row_number() over (ORDER BY Id DESC) cyqrownum,t.* from [Table_TY_Member] t ) v ...
- 控制台打印Hibernate的SQL语句显示绑定参数值
问题? 使用Hibernate提供的show_sql内置属性true只能输出类似于下面的SQL语句:Hibernate: insert into user(name,password) value ...
- 转:JSP 分页显示数据 (Oracle)
JSP 分页显示数据 (Oracle) 标签: Oracle分页JSP分页 2013-11-19 20:40 3598人阅读 评论(1) 收藏 举报 分类: Web(11) 版权声明:本文为博主原 ...
随机推荐
- 设置MyBatis在控制台打印SQL语句
在调试阶段,打印SQL会极大方便开发者.MyBatis有提供配置,只需要在MyBatis的配置文件mybatis-config.xml中<configuration>节点下,添加如下配置: ...
- Gitlab配置阿里邮件通知
1. 在/etc/gitlab/gitlab.rb 中添加如下内容 $ vi /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true git ...
- 通用Excel文件导出工具类
1:Excel格式 2:ExcelUtil.java import java.io.ByteArrayOutputStream; import java.io.IOException; import ...
- 第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告
一.实验题目,设计思路,实现方法 第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数) 设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法:2-7 运用 ...
- Linux cache 缓存过大
linux cache 缓存过大 : 除重启服务 之外:直接释放内存方式之一: 修改配置释放cached内存: echo > /proc/sys/vm/drop_caches
- CF875F Royal Questions
传送门 似乎可以按边权排序后二分图匹配 这里给一个复杂度稳定的算法 把一个公主能匹配的两个点连边,然后依次加边,每当加到一个大小为\(n\)的连通块中有\(n\)条边之后,这时形成了基环树,将这些边定 ...
- mysql 案例~ 分区表
一 简介:今天来聊聊分区表的概念和维护二分区的优点: 1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度. 2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的 ...
- windows cmd相关操作
一:文件夹1. 新建文件夹方式一:md[盘符:\][路径\]新目录例如:md c:\test\newtest 方式二:先使用cmd进入需要新建文件的根目录下,使用md或者mkdir 直接创建文件夹ne ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...