之前我第一篇有关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的一点使用方法...相关推荐

  1. 在SQL server中如何定时自动执行存储过程

    在SQL server中如何定时自动执行存储过程 1.首先开启sql代理服务 2.打开sqlserver软件 3.拉开SQL Server 服务菜单 4.右键作业,点击新增作业 5.在一般中添加名称和 ...

  2. SQL Server中数据透视表的Python脚本

    This article talks about Python scripts for creating pivot tables in multiple ways. 本文讨论了以多种方式创建数据透视 ...

  3. SQOOP 导出SQL SERVER中数据

    从SQL Server导出数据到HDFS sqoop import --connect 'jdbc:sqlserver://192.168.20.105:1433;databasename=dep' ...

  4. SQL Server中数据的修改是如何落盘的?

    SQL Server 维护着一个叫做buffer cache的东西, 在buffer cache中SQL Server 读取必须被取回的data pages. 数据在修改时并不是直接写到磁盘上的, 而 ...

  5. 【SQL Server中SMO的简单使用】 (装载)

    分类: 杂七杂八SQL Server知识点 2010-05-15 20:59 554人阅读 评论(2) 收藏 举报 SMO是SQL Mangagement Objects的简称.与之相对应的是ADO. ...

  6. SQL Server 中数据查询注意事项

    1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...

  7. 数据库SQL Server中数据的模糊查询

    1.Like 使用Like查询时,字段中的类容并不一定与查询内容完全匹配,只要字段中含有这些内容即可! 代码如下: select StudentName, StudentAdress from Stu ...

  8. sql server中数据约束相关的查询

    根据表名查找数据约束 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'CMS_EventLog'; SEL ...

  9. sql server中case的简单示例

    select *,     case          when resultrate>0 then case --<<case嵌套                          ...

最新文章

  1. 中国石油大学计算机专业论文,中国石油大学(计算科学与技术专业)毕业论文规范.doc...
  2. 【重温经典】张小龙:微信背后的产品观
  3. 移动设备应用程序开发入门一:创建用于设备的 Windows 窗体应用程序并打包进行部署...
  4. 第3关:HDFS-JAVA接口之上传文件
  5. spring 14-Spring框架JDBC操作
  6. 中国邮政支付宝卡通开通流程
  7. 7.docker pull
  8. 15. Django基础:cookies和sesseion
  9. php如何去重,php二维数组如何去重?(代码示例)
  10. 起面的英怯——幸运的舆图
  11. HCNA 认证课程笔记(1)
  12. python-把excel里面的数据存储到矩阵里面
  13. 私藏的自媒体图片素材网站,一键下载,免费使用
  14. Mysql增加传输数据量或连接时间,防止mysql server has gone away报错
  15. 怎么删除淘宝足迹 淘宝足迹多久才能形成
  16. Enhancement(5)--Field Exits {转载}
  17. linux flock 命令安装,在Linux上使用flock命令控制程序的异步执行
  18. 外部css样式不生效的原因
  19. 实践中 XunSearch(讯搜)的使用教程步骤
  20. 【虾皮选品趋势】盘点马来和新加坡市场雨季热销产品

热门文章

  1. [OpenGL]自己写的加载位图并转换成纹理的两个函数
  2. .net 调用css/javascipt出现的问题及解决
  3. (二十五)深度学习目标检测:RCNN
  4. android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
  5. 升级总代分享思路_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年
  6. css禁止背景图拉伸_html-css控制背景图全屏拉伸不重复显示
  7. adb命令重置_android – 擦除数据/通过ADB恢复出厂设置
  8. java多线程示例_Java线程示例
  9. python时间模块倒计时_Python时间模块
  10. Java LocalDateTime