存储过程分页查询和在ado.net中的使用,返回查询总数
1、创建查询分页的存储过程
CREATE PROCEDURE PageQuery
@tableName VARCHAR(),-- 表名
@strWhere VARCHAR(),-- 查询条件
@columnNames VARCHAR(),-- 查询要显示的列名
@pageIndex INT,-- 页面索引(第几页)
@pageSize INT,-- 页面大小
@recordCount INT OUTPUT -- 查询总数 AS BEGIN
DECLARE @strOrderBy NVARCHAR() = 'ORDER BY ID' -- recordCount
DECLARE @strCountSql NVARCHAR()
SET @strCountSql='SELECT @RecordCount= COUNT(*) FROM'+@tableName +' WHERE 1 = 1' + @strWhere
EXEC sp_executesql @strCountSql, N'@RecordCount int OUTPUT', @recordCount OUTPUT -- query page
DECLARE @strSql NVARCHAR()
SET @strSql = 'SELECT TOP ' + CONVERT(VARCHAR(), @pageIndex*@pageSize) + ' ROW_NUMBER() OVER('+ @strOrderBy +') AS RowID, '+@columnNames+' FROM '+ @tableName+' WHERE 1 = 1' + @strWhere
SET @strSql = 'SELECT * FROM (' + @strSql + ') as temp WHERE temp.RowID > ' + CONVERT(VARCHAR(), (@pageSize * (@pageIndex - )))
EXEC(@strSql) END;
为了通用,我把表名,要显示的列名,查询条件都当参数传了进来,不需要的可以去掉某些参数。
2、在ADO.NET中使用
public virtual DataTable QueryProcedureDataTable(string tableName,string strWhere,string columns,int pageIndex,int pageSize,out int recordCount)
{
SqlConnection conn = (SqlConnection)Context.Database.Connection; SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PageQuery"; //存储过程名称 //存储过程参数
recordCount = ;
SqlParameter[] sqlParameters = new SqlParameter[]
{
new SqlParameter("tableName",tableName),
new SqlParameter("strWhere",strWhere),
new SqlParameter("columnNames",columns),
new SqlParameter("pageIndex",pageIndex),
new SqlParameter("pageSize",pageSize),
new SqlParameter("recordCount",recordCount)
};
cmd.Parameters.AddRange(sqlParameters); SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table); conn.Close();
conn.Dispose();
return table;
}
存储过程分页查询和在ado.net中的使用,返回查询总数的更多相关文章
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...
- C# ADO.NET中设置Like模糊查询的参数
ADO.NET进行参数化时会自动将参数值包含在单引号中,除了特殊需求,最好不要自己手动添加单引号.ADO.NET中识别参数标识是使用符号@,如果在SQL语句中将参数标识放在单引号中,单引号中的参数标识 ...
- Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 .
现在假设有一个Student类,内有id,name,age属性String hql = "from Student s";按照以前的做法,我们通常是Query query = se ...
- Hibernate中关于Query返回查询结果是类名的问题
query.list返回的是一个装有类的信息的集合,而不装有数据库信息的集合.如下图 运行结果为: 因为得到的集合是类,所以要将list泛型设为那个类,并且将得到的集合进行.get(x).getx ...
- ArcGIS中的三种查询
ArcGIS runtime SDK for WPF/Silverlight中的三种常用的查询:QueryTask.FindTask.IdentifyTask都是继承自ESRI.ArcGIS.Clie ...
- SELECT中常用的子查询操作
MySQL中的子查询 是在MySQL中经常使用到的一个操作,不仅仅是用在DQL语句中,在DDL语句.DML语句中也都会常用到子查询. 子查询的定义: 子查询是将一个查询语句嵌套在另一个查询语句中: 在 ...
- Yii2中对数据库的查询方法如下
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- 存储过程分页 Ado.Net分页 EF分页 满足90%以上
存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...
- SQL Server 存储过程 分页查询
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
随机推荐
- 服务器修改静态ip
ifconfig,看当前网卡名字 设置 ip地址,子网掩码 ,广播地址 ifconfig eth1 172.16.11.25 netmask 255.255.255.0 broadcast 172.1 ...
- 第11篇Kubernetes部署微服务电商平台
kubernetes部署sock-shop微服务电商平台: 准备条件 确保kubernetes可以访问:reg.yunwei.edu镜像库 需要准备镜像: 部署微服务 ...
- 第4篇创建harbor私有镜像库
一.部署准备: 1.准备harbor软件包 在部署节点上: 2.挂载一个磁盘,专门存储harbor镜像和文件 3.进入到/etc/docker/harbor/目 ...
- 0xC0000005: 写入位置 0x00000000 时发生访问冲突的解决办法(转)
上面的意识就是你吧值付给了不该赋给的变量,或者说你把值付给了不能付给的变量(或者常量) ()最简单也最直接的错误可能就是scanf()的问题,我们都知道输入的时候都是scanf("%格式&q ...
- 查看tomcat的版本号
本经验主要介绍在windows下,如何查看tomcat的版本号. 工具/原料 安装了tomcat server的操作系统. 一.绿色版tomcat版本查看--命令catalina version 或者 ...
- Spark核心原理初探
一.运行架构概览 Spark架构是主从模型,分为两层,一层管理集群资源,另一层管理具体的作业,两层是解耦的.第一层可以使用yarn等实现. Master是管理者进程,Worker是被管理者进程,每个W ...
- 【leetcode】688. Knight Probability in Chessboard
题目如下: On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exa ...
- python 100day notes(2)
python 100day notes(2) str str2 = 'abc123456' print(str1.endswith('!')) # True # 将字符串以指定的宽度居中并在两侧填充指 ...
- Windows下 wamp下Apache配置虚拟域名
安装好wamp后 找到 找到 Include conf/extra/httpd-vhosts.conf 去掉前面的# 并保存 修改 DocumentRoot 和 ServerName ...
- JS-动态加载
var s = document.createElement('script'); s.setAttribute('src', ''); s.setAttribute('type', 'text/ja ...