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
 
--C#调用
 
  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 分页的更多相关文章

  1. sqlserver分页;mysql分页;orcale分页 的sql 查询语句

    一,sqlserver分页: )) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 二:mysql分页 )*每页显示的数据条数,当前页码 * 每页显示的数 ...

  2. SQLServer分页查询存储过程

    项目中用到的SQLServer分页查询存储过程. [存储过程] create PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1,     ...

  3. sqlserver 分页模糊查询

       积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = ...

  4. 高效的SQLSERVER分页查询的几种示例分析

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  5. 真正高效的SQLSERVER分页查询(多种方案)

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  6. 四种方式实现SQLServer 分页查询

    SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...

  7. SQLSERVER分页查询

    转:http://blog.csdn.net/qiaqia609/article/details/41445233   Sqlserver数据库分页查询一直是Sqlserver的短板,   第一种方案 ...

  8. Sqlserver分页的问题

    好久没有用SqlServer了,今天写了一个分页,遇到了小问题,本着温故而知新的道理,再来随便写些什么吧. 语句是这样的 string sql=“select * from ( select*,(ro ...

  9. 常用的几种 SQLServer 分页查询方式实现

    SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...

  10. SQLserver分页查询实例

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

随机推荐

  1. < java.util >-- List接口

    List本身是Collection接口的子接口,具备了Collection的所有方法.现在学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引,这是该集合最大的特点. List:有序 ...

  2. OC中数组类NSArray的详解,数组的遍历(二)

    数组类的便利 1.for循环(大家都会的...) 2.NSEmunerator 3.for in 首先重点说下 第二种NSEmunerator枚举器,系统声明是 @interface NSEnumer ...

  3. Haskell 趣学指南 入门笔记(二)

    显示类型声明,Haskell是不用定义类型的原因,很像python 想要确定某个表达式的类型 *Main> :t 'a' 'a' :: Char *Main> :t True True : ...

  4. linux查看文件权限

    ls -l abc (abc是文件名) 那么就会出现相类似的信息,主要都是这些:drwxr-xr-x 一共有10位数 其中: 最前面那个 d 代表的是类型 目录文件 中间那三个 rw- 代表的是所有者 ...

  5. 修改placeholder文字颜色

    .area_ipt ::-webkit-input-placeholder { /* WebKit browsers */ color:#258aca; } .area_ipt :-moz-place ...

  6. Struts2中的ModelDriven机制及其运用(转)

    所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...

  7. Oracle窗口函数显示想要的行数

    Oracle中支持窗口函数ROW_NUMBER(),其用法和 MSSQLServer2005中相同,比如我们 执行下面的 SQL语句: SELECT * FROM ( SELECT ROW_NUMBE ...

  8. 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  9. Spring Mvc 返回机制

    转自:http://jianzh5.iteye.com/blog/1909234 Spring Mvc 有如下的几种返回方式: ModelAndView, Model, ModelMap, Map, ...

  10. UML架构(转载)

    任何真正的世界系统是由不同的用户使用.用户可以是开发人员,测试人员,商务人士,分析师和等等.所以在设计一个系统的体系结构是用不同的角度心态.最重要的部分是从不同的观看者的角度来看,以可视化的系统.我们 ...