完整的分页存储过程以及c#调用方法
高效分页存储过程
USE [db]
GO
/****** 对象: StoredProcedure [dbo].[p_Page2005] 脚本日期: // :: ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------
create PROCEDURE [p_Page]
@tblName varchar(), -- TableName
@strGetFields varchar() = '*', -- Select field
@fldName varchar()='', -- Primary field name
@PageSize int = , -- Page size
@PageIndex int = , -- Page index
@OrderType bit = , -- SortType, not is DESC
@strWhere varchar() = '', -- QueryCodition (Note: Don't include where)
@total int = out
AS
begin
set nocount on declare @strSQL nvarchar() -- main sql
declare @strTmp varchar() -- temp variable
declare @strOrder varchar() -- sorttype ----记录数
set @strSQL = 'select @total=count(*) from [' + @tblName + '] where 1=1' + @strWhere;
--print @strSQL
exec sp_executesql @strSQL,N'@total int output',@total output;
--print @total; ----记录集
if (@OrderType != )
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName +'] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end if @PageIndex =
begin
set @strSQL = 'select top ' + rtrim(ltrim(str(@PageSize))) +' '+@strGetFields+ ' from [' + @tblName + '] where 1=1' + @strWhere + ' ' + @strOrder
end
else
begin
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'+ @strOrder if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where 1=1' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and 1=1' + @strWhere + ' ' + @strOrder
end --print @strSQL
exec (@strSQL)
set nocount off
end --exec p_Page2005 't_alarm_data','*','id',10,5,0,''
c#调用方法
public static DataSet GetRecordByPage(string tblName, int PageSize, int PageIndex, string strWhere, out int count)
{
return GetRecordByPage(tblName, "*", "ID", PageSize, PageIndex, strWhere, out count);
} public static DataSet GetRecordByPage(string tblName, string strGetFields, string fldName, int PageSize, int PageIndex,string strWhere, out int count)
{
DataSet ds = new DataSet();
try
{
using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_SQL))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SetParams(cmd); cmd.Parameters[].Value = tblName;
cmd.Parameters[].Value = strGetFields;
cmd.Parameters[].Value = fldName;
cmd.Parameters[].Value = PageSize;
cmd.Parameters[].Value = PageIndex;
cmd.Parameters[].Value = ;
cmd.Parameters[].Value = strWhere; cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "p_Page";
cmd.CommandTimeout = ; SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd; DataSet source = new DataSet();
adapter.Fill(ds);
//ds.Tables.RemoveAt(0); object o = cmd.Parameters["@total"].Value;
count = (o==null || o== DBNull.Value)?: System.Convert.ToInt32(o);
}
}
catch (SqlException e)
{
throw e;
}
return ds;
} private static void SetParams(SqlCommand cmd)
{
cmd.Parameters.Add(new SqlParameter("@tblName", SqlDbType.VarChar, ));
cmd.Parameters.Add(new SqlParameter("@strGetFields", SqlDbType.VarChar, ));
cmd.Parameters.Add(new SqlParameter("@fldName", SqlDbType.VarChar, ));
cmd.Parameters.Add(new SqlParameter("@PageSize", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@PageIndex", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@OrderType", SqlDbType.Bit));
cmd.Parameters.Add(new SqlParameter("@strWhere", SqlDbType.VarChar,)); SqlParameter param = new SqlParameter("@total", SqlDbType.Int);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
}
#endregion
完整的分页存储过程以及c#调用方法的更多相关文章
- 完整SQL分页存储过程(支持多表联接)
http://www.cnblogs.com/andiki/archive/2009/03/24/1420289.html Code/********************************* ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- SQL2005分页存储过程(支持多表联接)
Code /********************************************************* * 作 用:数据分页(完整SQL分页存储过程(支持多表联接)) ...
- mvc,EntityFramework调用分页存储过程
此文讲述mvc4+entityframework6+sqlserver2008环境下调用存储过程,实现分页. 1.分页存储过程代码如下: 分页原理用的row_number()和over()函数实现(没 ...
- MySql 存储过程及调用方法
存储过程实例: DELIMITER $$drop procedure if exists ff $$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PRO ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- php分页类的二种调用方法(转载)
php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调 ...
- Java对存储过程的调用方法
本文将介绍Java怎样实现对存数过程的调用方法,作者用了几个样例进行了具体的说明,简单明了,很适合刚開始学习的人. 一.Java怎样实现对存储过程的调用: A:不带输出參数的 create proce ...
- Oracle分页存储过程及PLSQL中的调用脚本
撰写过程:网上搜集测试了好多的Oracle分页存储过程代码,经整理后终于通过测试,特分享给大家 测试步骤:1.运行创建包命令;2.运行创建存储过程命令;3.运行调用分页存储过程语句 测试环境:wind ...
随机推荐
- vs2012配置OpenGL
1.下载glut包: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 2.将下载的压缩包解压,得到5个文件,如下: ...
- Python压缩
ru=lambda x:x.decode('u8') rp=lambda x:x.replace('\\','/') gb=lambda x:x.decode('gbk') class ZIP: de ...
- java中的成员变量和局部变量区别
1.作用域不同 成员变量的作用域在整个类内部都是可见,可用的: 局部变量的作用域仅限于定义它的方法,不能被其它方法调用: 2.初始值不同 java会给成员变量一个初始值,初始值为0: java不会给局 ...
- svn快速教程
本文拷贝自网址:http://www.subversion.org.cn/?action-viewnews-itemid-1 如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关 ...
- autoloader
自动加载 $loader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Blog', 'base ...
- occ代码分析
临时变量就是local里面的变量擦除变量就是把模型改成擦除标记 void SelectMgr_SelectionManager::LoadMode (const Handle(SelectMgr_Se ...
- JSON格式化与serialize序列化
一.JSON格式化 1. JSON是什么 JSON是一种数据的存储格式,用来沟通客户端Javascript和服务端PHP的交互.我们把用PHP生成JSON后的字符串传给前台Javascript,Jav ...
- 动态获取R.drawable.xx资源
String imageName = "index_fragmen"+getColor();final int resId = context.getResources().get ...
- guava学习--monitor
转载:https://my.oschina.net/realfighter/blog/349924 https://my.oschina.net/realfighter/blog/349926 M ...
- mysql5.6新特性总结
一. server参数默认值设置的变化http://dev.mysql.com/doc/refman/5.6/en/server-default-changes.html 二. innodb增强1.全 ...