ASP.NET简单SQL分页的实现

今天是出来实习的第32天,在学校学的像是囫囵吞枣一样,什么都是马马虎虎的,而分页这样的需要逻辑的像我这样的懒人喜欢用插件,仔细捉摸了下也不好,所以就花一点时间研究了下分页,

今天就来说说简单的SQL语句分页在ASP.NET的实现

SQL语句怎么写?

因为要写的是简单SQL语句实现分页所以SQL自然就不会很难啦!

1.IN NOT IN写法 效率低

--IN 和 NOT IN,效率较低
--这条语句的意思是查询五条数据不在前十条里的数据
SELECT TOP 5 * FROM TableName WHERE ID NOT IN(SELECT TOP 10 ID FROM TableName )

2.通过升序和降序排列

--通过排序进行分页
--首先查询十五条数据中的前五条 获取11到15的数据,因为是倒序,所以最后进行升序排列
SELECT * FROM(
    SELECT TOP 5 * FROM(
        SELECT TOP 15 * FROM TableName ORDER BY ID ASC)
            AS TEMP1 ORDER BY ID DESC)
        AS TEMP2 ORDER BY ID ASC

3.使用SQL Server Row Num()函数

--首先Row_Number()函数要和 over 配套使用
--首先通过Row_Number()函数查询前十条数据 然后全部并且大于0条的数据
--简单来讲top10 相当于一页显示多少条数据 而0相当于当前页数
select * from (select top 10 ROW_NUMBER() over(order by id) as temp,* from sqlpagetest )as temp where xxx>0

实现分页

Dbhelper

   public DataTable PageBysql(int pageSize, int pageIndex)
        {
            string sql = string.Format("select * from (select top {0} ROW_NUMBER() over(order by id) as xxx,* from sqlpagetest )as temp where xxx>{1}", pageSize, pageIndex);
            DataTable tb = new DataTable();
            SqlDataAdapter dp = new SqlDataAdapter(sql, conn);
            dp.Fill(tb);
            return tb;
        }

前台代码

  <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td>ID</td>
                    <td>姓名</td>
                </tr>
                <asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate>
                        <tr>
                            <td><%#Eval("id") %></td>
                            <td><%#Eval("name") %></td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
            <%--显示pageSize--%>
            <asp:HiddenField ID="HiddenField1" runat="server" />
                   <%--显示pageIndex--%>
             <asp:HiddenField ID="HiddenField2" runat="server" />
            <asp:LinkButton ID="LinkButton1" OnClick="LinkButton1_Click" runat="server">上一页</asp:LinkButton>
             <asp:LinkButton ID="LinkButton2" OnClick="LinkButton2_Click" runat="server">下一页</asp:LinkButton>
        </div>
    </form>

后台代码

public int maxpage;
        public int nowpage;
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                maxpage = 10;
                nowpage = 0;
                page(maxpage, nowpage);
                HiddenField1.Value = maxpage.ToString();
                HiddenField2.Value = nowpage.ToString();
            }
        }
        public void page(int maxpage, int nowpage)
        {
            Repeater1.DataSource = new dbhelper().PageBysql(maxpage, nowpage);
            Repeater1.DataBind();
        }
        //上一页
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            if (int.Parse(HiddenField2.Value) > 0)
            {
                maxpage =int.Parse(HiddenField1.Value)-10;
                nowpage = int.Parse(HiddenField2.Value)-10;
                page(maxpage, nowpage);
                HiddenField1.Value = maxpage.ToString();
                HiddenField2.Value = nowpage.ToString();
            }
            else
            {

            }
        }
        //下一页
        protected void LinkButton2_Click(object sender, EventArgs e)
        {

                maxpage +=(10+ int.Parse(HiddenField1.Value));
                nowpage += (10+int.Parse(HiddenField2.Value));
                page(maxpage, nowpage);
                HiddenField1.Value = maxpage.ToString();
                HiddenField2.Value = nowpage.ToString();

        }

积土而为山,积水而为海。 ——荀子

时间: 2024-08-04 05:55:11

ASP.NET简单SQL分页的实现的相关文章

简单SQL分页

Select * From (     Select     Row_Number() Over(Order By 表1.CreateTime desc) as rowId,     表1.AlumnusID,     表1.[Name],     表1.Photo     From     表1 INNER JOIN 表2 ON 表1.AlumnusID = 表2.AlumnusID     INNER JOIN 表3 ON 表2.BringUpID = 表3.BringUpID       

ASP.NET MVC 简单的分页思想与实现

, 作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MVC中的简单实现与应用. 一,定义分页器类 在ASP.net MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义. public class PagingHelper<T> 二,基本三要素 实现分页人所共知的三个基本属性: DataSource:数据源,要知道数据源共计多少条数据

详解ASP.NET MVC数据分页

ASP.NET MVC框架已经进入2.0时代,本文将从ASP.NET MVC数据分页谈起,希望能对大家有所帮助. 在网页上进行表格资料或其他显示资料的分页是一种十分常见的需求,以前我们有 GridView 或 DataPager 可以帮我们自动分页,虽然到了 ASP.NET MVC 一切全部重头来过,但我们也不用真的那麽辛苦的自己实做分页,因为早就有人帮我们写好程式并开放原始码分享给这个世界了. 如果你已经体会到在 ASP.NET MVC 中妥善利用强型别(Strong Typed)特性进行开发

ASP.NET之刷新分页

1,第一次全部把数据加载到内存中,然后再做分页,性能差,不推荐. 2,GridView自带分页 3,AspNetPager分页控件  这个是第三分控件需要下载,很好用 4,自己写分页 前三种就不介绍如何写了,网上很多,今天就来记录一下自己写的分页,不需要下载任何东西,全部都是代码完成. 我们的前台 <form id="form1" runat="server"> <div> //数据显示 <asp:Repeater ID="r

SQL分页查询总结{转}

开发过程中经常遇到分页的需求,今天在此总结一下吧.简单说来方法有两种,一种在源上控制,一种在端上控制.源上控制把分页逻辑放在SQL层:端上控制一次性获取所有数据,把分页逻辑放在UI上(如GridView).显然,端上控制开发难度低,适于小规模数据,但数据量增大时性能和IO消耗无法接受:源上控制在性能和开发难度上较为平衡,适应大多数业务场景:除此之外,还可以根据客观情况(性能要求,源与端的资源占用等)在源和端之间加一层,应用特殊算法和技术进行处理.以下主要讨论源上,即SQL上的分页.分页的问题其实

几种常见SQL分页方式效率比较-转

原文地址:几种常见SQL分页方式效率比较 分页很重要,面试会遇到.不妨再回顾总结一下. 1.创建测试环境,(插入100万条数据大概耗时5分钟). create database DBTestuse DBTest --创建测试表create table pagetest(id int identity(1,1) not null,col01 int null,col02 nvarchar(50) null,col03 datetime null) --1万记录集declare @i intset

asp.net利用存储过程分页代码

-最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = '*', -- 需要返回的列 @fldName varchar(255)='', -- 排序的字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @doCount bit = 0, -- 返回记录总数, 非 0 值则

oracle15 pl/sql 分页

PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: 案例:现有一张表book,表结构如下:书号 书名 出版社 请写一个过程,可以向book表添加书,要求通过java程序调用该过程. --in:表示这是一个输入参数,默认为in(不写in则默认就是in) --out:表示一个输出参数 Sql代码 1.create or replace procedur

ASP.NET MVC 数据分页思想及解决方案代码

作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MVC中的简单实现与应用. 一,定义分页器类 在ASP.NET MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义. public class PagingHelper<T> 二,基本三要素 实现分页人所共知的三个基本属性: DataSource:数据源,要知道数据源共计多少条数据,会