用于jqGrid获取SQL Server中数据的简单分页存储过程及sp_executesql的一点使用方法...
之前我第一篇有关jqGrid JSON数据的获取是动态拼接的SQL语句(因为是Access数据库),然后我自己也用SQL Server中的数据作了测试,为了方便写了一个分页的存储过程,过程中也认识了下sp_executesql的用法,在SQL查询分析器中的测试如下:
/**********************************************************=============================================================================* 执行带参数的SQL, sp_executesql Syntax sp_executesql [ @stmt = ] stmt [ {, [@params=] N'@parameter_name data_type [ OUT | OUTPUT ][,...n]' } {, [ @param1 = ] 'value1' [ ,...n ] } ] MSDN网址:http://msdn.microsoft.com/zh-cn/library/ms188001.aspx=============================================================================*/declare @id int,@SqlString nvarchar(200); --注意:使用exec sp_executesql时,一定要使用Nvarchar即 unicodeset @id=10set @SqlString=N'select * from area where id=@myid' --前面的N就是使其成为Unicode exec sp_executesql @SqlString,N'@myid int',@myid=@id--就相当于这种语法 sp_executesql 一个带参数的字符串,定义前面字符串中的参数,给参数赋值 --带输出参数declare @newid int;declare @SQLString nvarchar(500);declare @areaName varchar(20);set @newid=10;set @SQLString=N'select @areaNameOUT=name from area where id=@id'execute sp_executesql @SQLString,N'@areaNameOUT varchar(20) OUTPUT,@id int',@id=@newid,@areaNameOUT=@areaName OUTPUT;select @areaName; --这里就可以获取OUTPUT参数的值了 --通常在使用exec sp_executesql时,都会将 语句 和 变量定义(因为太长) 保存在变量中,如:declare @anotherId int;declare @execSQLString nvarchar(500); --用于保存要执行的语句declare @ParmDefinition nvarchar(500); --这个变量用于保存变量声明declare @newAreaName varchar(20);set @anotherId=10set @execSQLString=N'select @areaNameOUT=name from area where id=@id';set @ParmDefinition=N'@areaNameOUT varchar(20) OUTPUT,@id int';exec sp_executesql @execSQLString,@ParmDefinition,@id=@anotherId,@areaNameOUT=@newAreaName OUTPUT; --后面是给语句中的参数赋值select @newAreaName;
--在存储过程中的使用:
--一个简单的分页存储过程,使用SQL2005中的Row_Number()--其实分页的原型语句就比如下面这条语句:------取按id 升序的 第11到20条数据,借助了row_number()-- select * from (select row_number() over (order by id asc) as rows, * from area) as temp where rows between 11 and 20create proc AspNetPager(@pageSize int=20, --分页大小 @curPage int=1, --当前页码 @viewName varchar(100), --表或视图名称 @fieldName varchar(400)='*', --要查询的字段 @orderField varchar(50)='id', --排序字段 @orderType varchar(5)='asc', --排序类型 @where varchar(200)='1=1', --查询条件 @recordCount int OUTPUT --总的记录数,为输出参数,用于页面获取)ASBEGINdeclare @beginRow int; --开始行 declare @endRow int; --结束行 declare @tempLimit varchar(200); --用于查询是从第几条到第几条数据的拼接语句 declare @tempSQL NVARCHAR(1000); --用于临时保存要获取输出参数值的SQL语句 declare @selectSQL varchar(1000); --最后要查询的语句 set @beginRow=(@curPage-1)*@pageSize+1;set @endRow=@curPage*@pageSize;set @tempLimit='rows between '+CAST(@beginRow as VARCHAR) +' and '+CAST(@endRow as varchar);set @tempSQL=N'select @countOutPut=count(1) from '+@viewName+' where '+@where;exec sp_executesql @tempSQL,N'@countOutPut int OUTPUT',@countOutPut=@recordCount OUTPUT;set @selectSQL='select * from(select row_number() over ( order by '+@orderField+' '+@orderType+') as rows,'+@fieldName+' from '+@viewName+' where '+@where+') as main_temp where '+@tempLimit;exec(@selectSQL);END--use area --下面尝试的使用一下创建的存储过程,--declare @outCount int;--exec AspNetPager 10,1,'area','*','id','asc','1=1',@outCount output;
在C#方法中的使用(一个取数据的静态方法):
/// <summary>/// 查询按指定条件的记录总数/// </summary>/// <param name="pagesize">每页显示多少条记录</param>/// <param name="curpage">当前页索引</param>/// <param name="orderfield">排序字段</param>/// <param name="ordertype">排序类型:asc或desc</param>/// <param name="where">查询条件</param>/// <param name="recordTotal">总的记录数</param>/// <returns>返回查询到的数据</returns> public static IList<SqlCityInfo> GetCityGridData(int pagesize, int curpage, string orderfield, string ordertype, string where,ref int recordTotal) { IList<SqlCityInfo> cities = new List<SqlCityInfo>(); SqlParameter[] prams = new SqlParameter[] { new SqlParameter("@pageSize",pagesize),new SqlParameter("@curPage",curpage),new SqlParameter("@viewName","city"),new SqlParameter("@orderField",orderfield),new SqlParameter("@orderType",ordertype),new SqlParameter("@recordCount",SqlDbType.Int) }; prams[5].Direction = ParameterDirection.Output; SqlDataReader reader = SqlHelper.ExecuteReader("AspNetPager", CommandType.StoredProcedure, prams); // 使用AspNetPager存储过程while (reader.Read()) { SqlCityInfo city = new SqlCityInfo(); city.Id = Convert.ToInt32(reader["id"]); city.Code = reader["code"].ToString(); city.Name = reader["name"].ToString(); city.Fid = reader["FID"].ToString(); cities.Add(city); } reader.Close(); recordTotal = Convert.ToInt32(prams[5].Value);return cities; }
转载于:https://www.cnblogs.com/jancyxue/archive/2011/08/19/2145206.html
用于jqGrid获取SQL Server中数据的简单分页存储过程及sp_executesql的一点使用方法...相关推荐
- 在SQL server中如何定时自动执行存储过程
在SQL server中如何定时自动执行存储过程 1.首先开启sql代理服务 2.打开sqlserver软件 3.拉开SQL Server 服务菜单 4.右键作业,点击新增作业 5.在一般中添加名称和 ...
- SQL Server中数据透视表的Python脚本
This article talks about Python scripts for creating pivot tables in multiple ways. 本文讨论了以多种方式创建数据透视 ...
- SQOOP 导出SQL SERVER中数据
从SQL Server导出数据到HDFS sqoop import --connect 'jdbc:sqlserver://192.168.20.105:1433;databasename=dep' ...
- SQL Server中数据的修改是如何落盘的?
SQL Server 维护着一个叫做buffer cache的东西, 在buffer cache中SQL Server 读取必须被取回的data pages. 数据在修改时并不是直接写到磁盘上的, 而 ...
- 【SQL Server中SMO的简单使用】 (装载)
分类: 杂七杂八SQL Server知识点 2010-05-15 20:59 554人阅读 评论(2) 收藏 举报 SMO是SQL Mangagement Objects的简称.与之相对应的是ADO. ...
- SQL Server 中数据查询注意事项
1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...
- 数据库SQL Server中数据的模糊查询
1.Like 使用Like查询时,字段中的类容并不一定与查询内容完全匹配,只要字段中含有这些内容即可! 代码如下: select StudentName, StudentAdress from Stu ...
- sql server中数据约束相关的查询
根据表名查找数据约束 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'CMS_EventLog'; SEL ...
- sql server中case的简单示例
select *, case when resultrate>0 then case --<<case嵌套 ...
最新文章
- 中国石油大学计算机专业论文,中国石油大学(计算科学与技术专业)毕业论文规范.doc...
- 【重温经典】张小龙:微信背后的产品观
- 移动设备应用程序开发入门一:创建用于设备的 Windows 窗体应用程序并打包进行部署...
- 第3关:HDFS-JAVA接口之上传文件
- spring 14-Spring框架JDBC操作
- 中国邮政支付宝卡通开通流程
- 7.docker pull
- 15. Django基础:cookies和sesseion
- php如何去重,php二维数组如何去重?(代码示例)
- 起面的英怯——幸运的舆图
- HCNA 认证课程笔记(1)
- python-把excel里面的数据存储到矩阵里面
- 私藏的自媒体图片素材网站,一键下载,免费使用
- Mysql增加传输数据量或连接时间,防止mysql server has gone away报错
- 怎么删除淘宝足迹 淘宝足迹多久才能形成
- Enhancement(5)--Field Exits {转载}
- linux flock 命令安装,在Linux上使用flock命令控制程序的异步执行
- 外部css样式不生效的原因
- 实践中 XunSearch(讯搜)的使用教程步骤
- 【虾皮选品趋势】盘点马来和新加坡市场雨季热销产品
热门文章
- [OpenGL]自己写的加载位图并转换成纹理的两个函数
- .net 调用css/javascipt出现的问题及解决
- (二十五)深度学习目标检测:RCNN
- android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
- 升级总代分享思路_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年
- css禁止背景图拉伸_html-css控制背景图全屏拉伸不重复显示
- adb命令重置_android – 擦除数据/通过ADB恢复出厂设置
- java多线程示例_Java线程示例
- python时间模块倒计时_Python时间模块
- Java LocalDateTime