在ASP.NET开发中,分页功能是常见且重要的功能之一,通过使用存储过程实现分页,可以有效地提高数据检索的效率,本文将通过对一个ASP.NET分页存储过程实例的剖析,分享一些心得体会。
存储过程分页的基本原理
存储过程分页的基本原理是通过SQL语句中的
ROW_NUMBER()
函数对查询结果进行排序,并利用和子句来获取特定范围内的数据,这种方法可以减少客户端与服务器之间的数据传输量,提高应用性能。
实例剖析
以下是一个简单的ASP.NET分页存储过程实例,我们将通过这个实例来剖析其实现过程。
创建存储过程
我们需要在数据库中创建一个存储过程,该存储过程接受两个参数:页码和每页显示的记录数。
create PROCEDURE GetPagedData@PageNumber INT,@PageSize INTASBEGINSET NOCOUNT ON;SELECTROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum,*FROMYourTableNameWHERE(YourWhereCondition)OFFSET (@PageNumber - 1) * @PageSize ROWSFETCH NEXT @PageSize ROWS ONLY;END
在这个例子中,
YourTableName
是你需要分页的表名,
YourWhereCondition
是你需要满足的查询条件。
在ASP.NET中调用存储过程
在ASP.NET中,你可以使用ADO.NET或Entity Framework来调用这个存储过程。
using (SqlConnection conn = new SqlConnection("YourConnectionString")){SqlCommand cmd = new SqlCommand("GetPagedData", conn);cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.AddWithValue("@PageNumber", pageNumber);cmd.Parameters.AddWithValue("@PageSize", pageSize);conn.Open();SqlDataReader reader = cmd.ExecuteReader();while (reader.Read()){// 处理每条记录}}
心得体会
问题1:为什么使用和而不是关键字?
解答 :关键字只能用于返回固定数量的记录,而和可以返回一个范围内的记录,这使得分页更加灵活。
问题2:存储过程中的
ORDER BY (SELECT NULL)
有什么作用?
解答
:
ORDER BY (SELECT NULL)
是一个占位符,用于确保
ROW_NUMBER()
函数在排序时不会产生错误,由于
ROW_NUMBER()
函数本身不包含排序逻辑,所以需要一个排序依据,即使这个依据是随机的。
ADO 存取数据库时如何分页显示
其实方法有很多,但主要有两种: 一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。 二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。 两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。 我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记录存放在服务器内存中,然后在进行分页等处理,如果同时有超过 100 个的客户在线查询,那么 ASP 应用程序的执行效率将大受影响。 但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的 ASP 程序编写相对第二种方法要简单明了得多。 在这里作者就以我们常见的 ASP BBS 程序为例,来给大家分析一下如何在 BBS 程序里实现分页显示功能,由于我们一般使用的 BBS 程序的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。 进行 ADO 存取数据库时的分页显示,其实就是对 Recordset 的记录进行操作。 所以我们首先必须了解 Reordset 对象的属性和方法: BOF 属性:目前指标指到 RecordSet 的第一笔。 EOF 属性:目前指标指到 RecordSet 的最后一笔。 Move 方法:移动指标到 RecordSet 中的某一条记录。 AbsolutePage 属性:设定当前记录的位置是位于哪一页 AbsolutePosition 属性:目前指标在 RecordSet 中的位置。 PageCount 属性:显示 Recordset 对象包括多少“页”的数据。 PageSize 属性:显示 Recordset 对象每一页显示的记录数。 RecordCount 属性:显示 Recordset 对象记录的总数。
asp.net C#怎么写翻页类?
sqlserver的? 可以写存储过程 写类 传入 pagesize(页面大小)pageindex(页索引),再加一个输出参数sum(数据中条数)create proc page@pageindex int,@pagesize int,@sum int outputasselect top(@pagesieze) from table where id not in(selcet top(@pagesize(@pageindex -1))id from table order by id) order by idselect @sum = count(*) from table然后调用存储过程就行了。 当然我这个 存储效率 不高,够你学习学习,如果有需要加QQ。
5 G开发学习需要基础吗?
1、基础知识学习软件开发需要大量与数学、英语打交道,所以需要有一定的数学、英语基础。 有了这个基础,学起来可以事半功倍。 当然,对数学、英语的要求也没有想象中的那么高。 2、基础编程语言编程语言是学软件开发的钥匙,初学者好根据自身的喜好或者职业规划选择语言。 目前主流的编程语言包括Java、PHP、、C#语言等,新手建议从C语言开始,是基础也实用的语言,之后也可以慢慢扩展。 其实很多编程语言之间有所互通,比如数据类型、变量、常量等。 在学习实践过程中,了解编程内涵,养成编程思维,这样跨语言学习会非常快。 3、数据库(SQL Server)知识除了基础学习,数据库相关的也是必不可少的。 数据的存储、调用在软件开发运行过程中必不可少4、web相关知识主要分为HTML、CS经过这四个阶段,基本就掌握了完整的开发基础了。 很多人可能会说,内容太多,无法全部掌握怎么办?不用担心,现在专业的软件开发公司,也是团队分工协作,跨语言、跨岗位非常少。 如果有一些计算机编程基础,3个月就能打开软件开发的大门,如果是零基础,少需要一个月,而且软件开发更新速度比较快,需要跟着时代不断学习进步。 软件开发必备技能1、熟练一门语言熟练一门语言可以帮助你看懂前人的代码,熟悉语言的特性,用更好的方式实现功能,同时避免一些意外并且你认为神奇的错误。 总而言之,熟练一门语言是你进入开发的第一步。 2、面向对象设计为了应对软件开发中的面向对象设计思想,开发人员也需要学习一种面向对象的语言。 面向对象设计是一种设计复杂程序的方法,它将代码分成了单独的类和对象(类的实例),这些类和对象封装了一些特定的功能。 3、Linux基础开发都是基于类Unix系统的,所以Lunix必定需要接触,命令通用;而且几乎所有的后端服务器用的都是Lunix系统,同时即使你只做前端,也需要很多的接触系统相关的东西。 4、源代码管理管理源代码是任何软件开发项目不可或缺的组成部分。 在使用源代码之前,应该有一个网络来共享项目的所有文件。 源代码管理工具最基本的功能,是保留软件项目中对文件所做更改的历史记录。 它还允许多个开发人员同时处理相同的代码, 并将这些处理代码融合在一起。 中国的软件行业规模不是很大,有些软件企业在软件制作上,也只是采用了一些软件工程的思想,距离大规模的工业化大生产比较还是有一定的差距;原因有管理体制的问题,市场问题,政策问题,也有软件工程理论不全面和不完善的问题。 所以软件工程的研究和应用,以及中国软件行业的进一步发展,都需要一定的既有软件工程的理论基础和研究能力,又有一定的实践经验的软件工程科学技术人员来推动。 软件工程的前途是光明的。 软件服务外包属于智力人才密集型现代服务业。 大量著名外包企业落户宁波。 主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任程序员、软件测试员、项目经理等工作岗位。 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。 它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。 在现代社会中,软件应用于多个方面。 典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。 同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。 这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。














发表评论