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. 关于ios极光推送server端注意的地方

    今天试用了极光推送API 用它是因为,大多数人说它的文档是最全的,但是用过之后,发现关于IOS的文档,还是很不够,导致走了一点弯路! 特别是服务端的代码:https://github.com/jpus ...

  2. linux 简单的DMA例程

    一个简单的使用DMA 例子 示例:下面是一个简单的使用DMA进行传输的驱动程序,它是一个假想的设备,只列出DMA相关的部分来说明驱动程序中如何使用DMA的. 函数dad_transfer是设置DMA对 ...

  3. 函数 swift

    func add(a:Int,b:Int)->Int { return a+b }

  4. VS中引用第三方库的方法(配置sqlite数据库)

    我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...

  5. Objective-C面向对象(一)

    1.类和对象 1.1定义类 面向对象的程序设计中有两个重要概念:类(class)和对象(object),类事某一批对象的抽象,对象是一个具体存在的实体. Objective-C定义类需要氛围2个步骤 ...

  6. loadView, viewDidLoad 快速使用

    一  loadView: 在每次访问 UIViewController时,且其 view = nil 时,会调用这个方法,所以大家在开发中想自己设置 view 的可以用这个方法,在这个方法中自定义 v ...

  7. mysql 慢查询开启

    相关博客: linux下开启mysql慢查询,分析查询语句 开启方法: 方法一:使用命令开启慢查询开启 mysql> show variables like "%long%" ...

  8. 15、android 用toast实现简单的进度显示

    if(mtoast!=null) { mtoast.setText(progress); } else { mtoast=Toast.makeText(getApplicationContext(), ...

  9. ASP.NET本质论阅读----线程与异步

    线程 概要:操作系统通过线程对程序的执行进行管理 线程的数据结构:1.线程的核心对象(包含线程的当前寄存器状态),调用线程时-寄存器状态被加载到CPU中. 2.线程环境块TEB:一块用户模式下的内存 ...

  10. BitMap排序

    问题描述:       BitMap排序思想:             用1bit位标记某个元素对应的值       优点:             效率高,不允许进行比较和移位            ...