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条(客户真实数据,量不大),分页查询 ...
随机推荐
- ssh 安装
一 ssh 1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or dire ...
- Jquery 1.8.2 click function - 动态
Jquery 动态按钮方法如下: $("#parentID").on("click",'.classname',function(){$(this).par ...
- spring mvc官网下最新jar搭建框架-静态资源访问处理-注解-自动扫描
1.从官网下载spring相关jar http://spring.io/projects 点击SPRING FRAMEWORK
- C++中栈的出栈,入栈规则:A,B,C,D,E
考题: 栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前 栈中元素可以出栈,则出栈序列可能是_____a d___________. a. ABCED b. DBCEA c. CD ...
- 四则运算2--设计思路--软件工程-c++
1.题目避免重复. 2.可定制(数量 打印方式). 3.可以控制下列参数:是否有乘除法.是否有括号.数值范围.加减有无负数.除法有无余数.是否支持分数(真分数,假分数...).是否支持小数(精确到多少 ...
- SQL Server性能优化(1)使用SET函数
在一切开始之前,先看下微软的建议:在系统的整体性能优化里面, TSQL优化优先级并不是最高的. 本文包括四部分: SET STATISTICS TIME ON SET STATISTICS IO SE ...
- 使用Java 8 Lambda表达式对Employee类进行操作
1,首先定义Employee类. package coffee.how.to.program.early.objects.chapter15; public class Employee { priv ...
- WWDC2014 debugging_in_xcode_6 总结
1.GCD的waiting queue 可以在Xcode左侧的面板中查看. 2.可以对View进行debug类似reveal. 3.查看运行时的对象,对于自定义对象可以实现- (id)debugQui ...
- boost之bind
bind1st bind2nd在stl里面有具体的实现,只是只能绑定两个参数. boost里面的bind使用bind(Fun f,A1 a1,A2,a2...)产生一个对象,这个对象可以有占位符,可以 ...
- 【BZOJ】【2565】最长双回文串
Manacher算法 找出一个最长子串S=X+Y,且X和Y都是回文串,求最长的长度是多少…… 同时找两个串明显很难搞啊……但是我们可以先找到所有的回文串!在找回文串的同时我们可以预处理出来l[i]和r ...