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条(客户真实数据,量不大),分页查询 ...
随机推荐
- zeromq
分布式系统之分布式中间件zeroMQ zeroMQ,又称0MQ,是一个非常简单的通信库,它扩展了传统BSD socket能力,提供简单的基于消息的通信.zeroMQ不解析消息体,没有序列化能力,或者说 ...
- Linux获取线程tid线程名
Linux获取线程tid线程名 1 2 3 4 5 6 //thread name char cThreadName[32] = {0}; prctl(PR_GET_NAME, (unsigned l ...
- SQL Server数据库学习笔记-概念数据模型
概念数据模型(Conceptual Data Model)也称为信息模型.它是对客观事物及其联系的抽象,用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具. ...
- python实现树莓派生成并识别二维码
python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...
- Matlab实现抽样定理
Matlab实现抽样定理 正弦信号的抽样: 首先时间跨度选择 -0.2 到 0.2,间隔0.0005取一个点,原信号取 sin(2π*60t) ,则频率为60Hz. 由于需要输出原始信号的波形,我选 ...
- 自定义debug信息
#ifdef DEBUG #define debug(fmt,args...) printk(fmt ,##args) #define debugX(level,fmt,args...) if ...
- Java 集合转换(数组、List、Set、Map相互转换)
转自:http://blog.csdn.net/top_code/article/details/10552827 package com.example.test; import java.util ...
- OC学习笔记之属性详解和易错点
属性的概念在OC1.0中就存在,格式是定义实例变量,然后定义setter和getter方法,用点操作符操作属性 举例,类的接口部分 @interface Father : NSObject { NSI ...
- Vue2.0的通用组件
饿了么基于Vue2.0的通用组件开发之路(分享会记录) Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库. ...
- cocos2dx 2.0+ 版本,IOS6.0+设置横屏
使用cocos2dx 自带的xcode模板,是不能正常的设置为横屏的. 一共修改了三个地方: 在项目属性中:Deployment Info中,勾选上 Landscape left,以及 Landsca ...