存储过程分页查询和在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语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
 
随机推荐
- Feign基础教程
			
https://blog.csdn.net/u010862794/article/details/73649616 简介 Feign使得 Java HTTP 客户端编写更方便.Feign 灵感来源于R ...
 - Mysql语句优化建议
			
一.建立索引 1)考虑在 where 及 order by 涉及的列上建立索引 2)对于模糊查询, 建立全文索引 3)对于多主键查询,建立组合索引 二.避免陷阱 然而,一些情况下可能使索引无效: 1) ...
 - Shell基本概述
			
目录 Shell01--基本概述 1. Shell课程大纲介绍 2. 什么是Shell ? 3. 什么是Shell脚本 ? 4. 为什么要学Shell编程 ? 5. 学习Shell编程需要哪些知识 ? ...
 - shell input value from console
			
echo "Please enter some input: " read input_variable echo "You entered: $input_variab ...
 - JS的一些日常
			
1. [1] == 1 => true; 很神奇.. 2.js变量命名规则: // 1.变量命名必须以字母.下划线”_”或者”$”为开头.其他字符可以是字母._.美元符号或数字. / ...
 - 使用 jQuery 实现当前页面高亮显示的通栏导航条
			
index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
 - ReactNative 遇到的问题汇总
			
1.react-native 启动项目出现如下报错 解决方法: nvm install v9.0.0 nvm alias default v9.0.0
 - C常量
			
C 常量 常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 常量就像是常规的变量,只不 ...
 - centos7 安装PHP5.3 报错undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
			
系统:centos 7 原有PHP版本:5.6.27,5.4.45 试着安装nginx+多php版本,首先安装了5.6和5.4的版本,一帆风顺,但是在安装5.3.29版本时,出现问题了,configu ...
 - Python之-在字典、列表、集合中刷选数据
			
一.元组.字典.列表的遍历 1.元组遍历 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历 #troup s = ["aaa","bb ...