热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

动态分页实现

Code分页存储过程CREATEprocedurePagersqlstrnvarchar(4000),--查询字符串currentpageint,--第N页pagesizeint-

 

ContractedBlock.gifExpandedBlockStart.gifCode
//分页存储过程

CREATE    procedure Pager
@sqlstr nvarchar(
4000), --查询字符串
@currentpage 
int--第N页
@pagesize 
int --每页行数
as
set nocount on
declare @P1 
int--P1是游标的id
 @rowcount 
int,
 @pagecount 
int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt
=1,@ccopt=1,@rowcount=@rowcount output
 select ceiling(
1.0*@rowcount/@pagesize) as pagecount,@rowcount as recordcount--,@currentpage as 当前页 
set @pagecount = ceiling(1.0*@rowcount/@pagesize)
IF @currentpage
>=@pagecount
   
set @currentpage=@pagecount
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,
16,@currentpage,@pagesize 
exec sp_cursorclose @P1

set nocount off
GO

//实现代码:



//执行分页程序
        public DataTable ExecPager(string sql, int  curPage, int pageSize, out int pageCount , out int recordCount)
        {
            
//Set up a return value
            DataTable dt = new DataTable();
            DataSet ds 
= null;
           
//Create a parameter
            SqlParameter[] parms ={
                XNCJWC.Utility.Common.MakeInParm(
"@sqlstr",SqlDbType.VarChar,4000, sql),
                XNCJWC.Utility.Common.MakeInParm(
"@currentpage",SqlDbType.Int, 4, curPage),
                XNCJWC.Utility.Common.MakeInParm(
"@pagesize",SqlDbType.Int, 4, pageSize)
            };
            
try
            {
                
//Execute the query 
                ds = SqlHelper.ExecuteReaderDataSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "Pager", parms);
                dt 
= ds.Tables[1];
                pageCount 
= Int32.Parse(((DataRow)dt.Rows[0])[0].ToString());
                recordCount 
= Int32.Parse(((DataRow)dt.Rows[0])[1].ToString());
            }
            
catch (Exception e)
            {
                XNCJWC.Utility.Log.Error(e.Message.ToString());

                
throw e;// new Exception("Query Failed");
            }
            
return ds.Tables[2];
        }

   
------------------------------------------------------------------------------------------------------------

pager类:

public class Pager
    {
       
private int _curPage ; //当前页数
       private int _recordCount ;//总记录数
       private int _pageSize  = 20; //每页记录数
       private int _pageCount;  //页数
       private string _strSql;  //sql语句
       private DataTable _dt;    //当前页记录集
          public Pager()
        {
         _curPage 
= 1 ;
         _recordCount 
= 0 ;        
         _pageCount 
= 0;
         _strSql 
= "";
        }
        
public Pager(string  sql, int curpage)
        {
            _recordCount 
= 0;
            _pageCount 
= 0;
            _strSql 
= sql;
            _curPage 
= curpage;
        }
       
/// 
       
/// 分页
       
/// 

        public void StartPage()
        {
            _dt 
= ExecPager(this._strSql, this._curPage, this._pageSize, out _pageCount, out _recordCount);              

        }
        
public int CurPage
        {
            
get { return this._curPage; }
            
set { this._curPage = value; }
        }
        
public int RecordCount
        {
            
get { return this._recordCount; }
            
set { this._recordCount = value; }
        }
        
public int PageSize
        {
            
get { return this._pageSize; }
            
set { this._pageSize = value; }
        }
        
public int PageCount
        {
            
get { return this._pageCount; }
            
set { this._pageCount = value; }
        }
        
public string StrSql
        {
            
get { return this._strSql; }
            
set { this._strSql = value; }
        }

        
public DataTable Dt
        {
            
get { return this._dt; }
            
set { this._dt = value; }
        }
       

    }




转:https://www.cnblogs.com/hubcarl/archive/2009/05/10/1453502.html



推荐阅读
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
mobiledu2502891283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有