sqlserver 分页
SQL语句: create PROCEDURE [dbo].[GetPageDataOutRowNumber]
(
@tn nvarchar(),--表名称
@idn nvarchar(),--表主键名称
@pi int = ,--当前页数
@ps int = ,--每页大小
@wh nvarchar() = '',--wehre查询条件
@oby nvarchar() = '',--orderby 排序
@rc int output,--总行数(传出参数)
@pc int output--总页数(传出参数)
)
AS
DECLARE @sql NVARCHAR()='',@sqlCount NVARCHAR()=''
--.计算总行数和总页数
SET @sqlCount = 'SELECT @rc=COUNT(['+@idn+']),@pc=CEILING((COUNT('+@idn+')+0.0)/'+ CAST(@ps AS VARCHAR)+') FROM ' + @tn
IF LEN(@wh)>
set @sqlCount=@sqlCount+' WHERE '+@wh
print @sqlCount
EXEC SP_EXECUTESQL @sqlCount,N'@rc INT OUTPUT,@pc INT OUTPUT',@rc OUTPUT,@pc OUTPUT
--.分页
--.1如果是第一页,则直接查询
IF @pi =
BEGIN
SET @sql='SELECT TOP '+str(@ps) +' * FROM '+@tn
IF LEN(@wh)>
set @sql=@sql+' WHERE '+@wh
IF LEN(@oby)>
SET @sql=@sql+' order by ' +@oby
EXEC(@sql)
END
ELSE--.2如果不是第一页,则拼接查询语句
BEGIN
SET NOCOUNT ON
SET @sql='SELECT * FROM (select row_number() over(order by '
IF LEN(@oby)>
set @sql=@sql + @oby+') as rowNum,* from '+@tn
else
set @sql=@sql + @idn+') as rowNum,* from '+@tn
IF LEN(@wh)>
set @sql=@sql+' where '+@wh
set @sql=@sql+')as temp where rowNum>'+str(@ps * (@pi-))+' and rowNum<='+str(@ps*@pi)
print @sql
EXEC(@sql)
SET NOCOUNT OFF
END
--测试语句
declare @rc int,@pc int
exec [GetPageDataOutRowNumber] 'Ams_Area','ar_id',,,'',' ar_id desc',@rc output,@pc output
select @rc,@pc
private void getdataByfenye(HttpContext context)
{
int pageSize = int.Parse(context.Request["rows"].ToString());
int page = int.Parse(context.Request["page"].ToString()); string strCon = @"Server=192.168.10.237;database=KM;uid=sa;pwd=Password01!;";
SqlConnection con = new SqlConnection(strCon);
SqlCommand com = new SqlCommand("GetPageDataOutRowNumber", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@tn", "T_KNOWLEDGE_EXPERT"));
com.Parameters.Add(new SqlParameter("@idn", "OID"));
com.Parameters.Add(new SqlParameter("@pi", page));
com.Parameters.Add(new SqlParameter("@ps", pageSize));
string strWhere = "";
string strOby = "";
string strExpert = context.Request["expert"] == null ? "" : context.Request["expert"].ToString();
string strDeptno = context.Request["deptno"] == null ? "" : context.Request["deptno"].ToString();
if (!string.IsNullOrEmpty(strExpert))
{
strWhere += " EXPERT = '" + strExpert + "' and ";
}
if (!string.IsNullOrEmpty(strDeptno))
{
strWhere += " DEPARTMENT like '%" + strDeptno + "%' and ";
}
if (!string.IsNullOrEmpty(strWhere))
{
strWhere = strWhere.Substring(, strWhere.LastIndexOf("and"));
}
com.Parameters.Add(new SqlParameter("@wh", strWhere));
com.Parameters.Add(new SqlParameter("@oby", strOby)); SqlParameter param = new SqlParameter("@rc", SqlDbType.Int);
param.Direction = ParameterDirection.Output;
com.Parameters.Add(param);
SqlParameter param1 = new SqlParameter("@pc", SqlDbType.Int);
param1.Direction = ParameterDirection.Output;
com.Parameters.Add(param1);
com.CommandTimeout = ;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = com; con.Open();
DataSet ds = new DataSet();
sda.Fill(ds);
con.Close();
object o = com.Parameters["@rc"].Value;
int total = (o == null || o == DBNull.Value) ? : Convert.ToInt32(o); object b = com.Parameters["@pc"].Value;
int pageCount = (b == null || o == DBNull.Value) ? : Convert.ToInt32(b); List<KnowledgeExpert> lst = new List<KnowledgeExpert>();
KnowledgeExpert ke = new KnowledgeExpert();
foreach (DataRow dr in ds.Tables[].Rows)
{
ke = new KnowledgeExpert();
ke.CREATED_BY = dr["CREATED_BY"] == null ? "" : dr["CREATED_BY"].ToString();
ke.CREATED_TIME = dr["CREATED_TIME"] == null ? "" : dr["CREATED_TIME"].ToString();
ke.DEPARTMENT = dr["DEPARTMENT"] == null ? "" : dr["DEPARTMENT"].ToString();
ke.DESCRIPTION = dr["DESCRIPTION"] == null ? "" : dr["DESCRIPTION"].ToString();
ke.EXPERT = dr["EXPERT"] == null ? "" : dr["EXPERT"].ToString();
ke.OID = dr["OID"].ToString();
lst.Add(ke);
}
JavaScriptSerializer jss = new JavaScriptSerializer();
String str = jss.Serialize(lst);
String str2 = "{\"total\":" + total + ",\"rows\":" + str + "}";
//Thread.Sleep(3000);
context.Response.Write(str2);
}
sqlserver 分页的更多相关文章
- sqlserver分页;mysql分页;orcale分页 的sql 查询语句
一,sqlserver分页: )) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 二:mysql分页 )*每页显示的数据条数,当前页码 * 每页显示的数 ...
- SQLServer分页查询存储过程
项目中用到的SQLServer分页查询存储过程. [存储过程] create PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1, ...
- sqlserver 分页模糊查询
积少成多 ---- 仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = ...
- 高效的SQLSERVER分页查询的几种示例分析
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...
- 真正高效的SQLSERVER分页查询(多种方案)
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...
- 四种方式实现SQLServer 分页查询
SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...
- SQLSERVER分页查询
转:http://blog.csdn.net/qiaqia609/article/details/41445233 Sqlserver数据库分页查询一直是Sqlserver的短板, 第一种方案 ...
- Sqlserver分页的问题
好久没有用SqlServer了,今天写了一个分页,遇到了小问题,本着温故而知新的道理,再来随便写些什么吧. 语句是这样的 string sql=“select * from ( select*,(ro ...
- 常用的几种 SQLServer 分页查询方式实现
SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...
- SQLserver分页查询实例
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...
随机推荐
- JVM学习总结五(番外)——VisualVM
距离上次介绍Jconsole已经时隔两周了,这期间由于工作中要用go来做一个新项目,所以精力都用在入门go上了,不过发现go语言用起来真的挺不错的,比python感觉还好点,大家没事可以了解下. ...
- Swift给每个开发者赢取500万的机会!不看一生后悔。
[导语] Swift的横空出世,很多有想法的人已经发现其中的蕴含的巨大商机,而很多新手却只是云里雾里,只知道大家最近讨论Swift很欢乐.内行看门道,外行看热闹,说的就是这个理.如果你能把swift用 ...
- 个人软件过程(psp)需求文档
1. 业务需求 1.1 应用背景 开发软件项目进度计划总是那么不准确,延期经常出现,跟可恨的是甚至无法给出一个相对比较明确的延迟时间.很大 因素在于分配给开发人员的完成时间与开发人员的实际完成时间有 ...
- Lisp使用Lambda语法
lamdba 其实就是一个匿名函数. 定义Lisp的lambda语法非常的简单,如下: (lambda ([parameter]) [experssion]) 调用lambda的语法有三种方法,如下: ...
- 向Array中添加选择排序
选择排序思路 在无序区中选出最小的元素,然后将它和有序区的第一个元素交换位置. 选择排序实现 Function.prototype.method = function(name, func){ thi ...
- android开发,关于android app实现静默安装自己(系统签名)
产品需求,木有办法.android系统是跟厂商定制的,保证系统开机就运行我们的app,并且实现自己静默安装,完全自动化,无需人工操作. 网上有很多办法, 1.要么要通过android 源码拿到密钥文件 ...
- vasprintf的实现
有些系统,例如AIX,没有vasprintf和asprintf ,如果是做porting,有时需要写一个简单的代替. 代码如下: #if !defined(HAVE_VASPRINTF) #if de ...
- ios 百度地图
百度地图 中的注意事项 1. 百度地图中 使用了c++ 设置buidSeting compoileSource 为 Object-C++ 强制使用oc++编译器 2. 设置 BuidSeti ...
- __cdecl __stdcall __fastcall之函数调用约定讲解
首先讲解一下栈帧的概念: 从逻辑上讲,栈帧就是一个函数执行的环境:函数参数.函数的局部变量.函数执行完后返回到哪里等等. 实现上有硬件方式和软件方式(有些体系不支持硬件栈) 首先应该明白,栈是从高地址 ...
- C51关键字
C51 中的关键字 关键字 用途 说明 auto 存储种类说明 用以说明局部变量,缺省值为此 break 程序语句 退出最内层循环 case 程序语句 Switch语句中的选择项 char 数据类型说 ...