(1)存储过程(SQL2000和2005下都可用):
使用:将存储过程中的Orders改为自己所要查询数据的表的名称,OrderID改为自己所用表中的标识字段(具有唯一值就可以)
存储过程测试:
(2)页面前台:
注:按钮中的文本设为"1"和"2"
(3)页面后台:
注:在两个翻页事件中利用了两按钮自身的文本值来保存参数,并相与影响
USE [Northwind] GO /****** 对象: StoredProcedure [dbo].[p_GetOrders] 脚本日期: 03/29/2010 23:00:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[p_GetOrders] @strWhere varchar(1500), -- 查询条件 (注意: 不要加 where) @PageSize int = 50, -- 页尺寸 @PageIndex int = 1, -- 页码 @PageCount int out, --总页数 @RecordCount int out --总记录数 AS BEGIN declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 select @RecordCount=count(*) from SaleInvoices select @PageCount=ceiling(@RecordCount/@PageSize) set @strTmp = '<(select min' set @strOrder = ' order by OrderID desc' if @PageIndex = 1 begin if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where ' + @strWhere + ' ' + @strOrder else set @strSQL = 'select top ' + str(@PageSize) +' * from Orders '+ @strOrder --如果是第一页就执行以上代码,这样会加快执行速度 end else begin --以下代码赋予了@strSQL以真正执行的SQL代码 set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where OrderID' + @strTmp + '(OrderID) from (select top ' + str((@PageIndex-1)*@PageSize) + ' OrderID from Orders' + @strOrder + ') as tblTmp)'+ @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where OrderID' + @strTmp + '(OrderID) from (select top ' + str((@PageIndex-1)*@PageSize) + ' OrderID from Orders where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder end --print (@strSQL) exec (@strSQL) END
使用:将存储过程中的Orders改为自己所要查询数据的表的名称,OrderID改为自己所用表中的标识字段(具有唯一值就可以)
存储过程测试:
declare @PageCount int declare @RecordCount int exec p_GetPaging '[no] like "%RB%"',10,3,@PageCount,@RecordCount
(2)页面前台:
...... <asp:TextBox ID="txtAllSearch" runat="server"></asp:TextBox> <asp:Button ID="btnAllSearch" runat="server" Text="搜索" onclick="btnAllSearch_Click" /> <asp:GridView ID="GvSAll" runat="server"> </asp:GridView> <asp:LinkButton ID="lbtnPre" runat="server" onclick="lbtnPre_Click" Text="1">1</asp:LinkButton> <asp:LinkButton ID="lbtnNext" runat="server" onclick="lbtnNext_Click" Text="2">2</asp:LinkButton> ......
注:按钮中的文本设为"1"和"2"
(3)页面后台:
private int PageSize = 5; //全局变量 private int PageIndex = 1; //全局变量 //获取数据方法 protected DataTable getPageDataSource(string sqlWhere, int pageIndex, int pageSize) { string connStr = ConfigurationManager.AppSettings["MsSql2nd"].ToString(); SqlConnection conn = new SqlConnection(connStr); conn.Open(); string sql = "p_GetPaging"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@strWhere",SqlDbType.VarChar); cmd.Parameters["@strWhere"].Value = sqlWhere; cmd.Parameters.Add("@PageIndex", SqlDbType.Int); cmd.Parameters["@PageIndex"].Value = pageIndex; cmd.Parameters.Add("@PageSize", SqlDbType.Int); cmd.Parameters["@PageSize"].Value = pageSize; cmd.Parameters.Add("@RecordCount",SqlDbType.Int); cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output; cmd.Parameters.Add("@PageCount", SqlDbType.Int); cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output; SqlDataReader sdr = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(sdr); sdr.Dispose(); conn.Close(); return dt; } //获取总页数 protected int getPageCount(string sqlWhere, int pageIndex, int pageSize) { string connStr = ConfigurationManager.AppSettings["MsSql2nd"].ToString(); SqlConnection conn = new SqlConnection(connStr); conn.Open(); string sql = "p_GetPaging"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@strWhere",SqlDbType.VarChar); cmd.Parameters["@strWhere"].Value = sqlWhere; cmd.Parameters.Add("@PageIndex", SqlDbType.Int); cmd.Parameters["@PageIndex"].Value = pageIndex; cmd.Parameters.Add("@PageSize", SqlDbType.Int); cmd.Parameters["@PageSize"].Value = pageSize; cmd.Parameters.Add("@RecordCount",SqlDbType.Int); cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output; cmd.Parameters.Add("@PageCount", SqlDbType.Int); cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output; SqlDataReader sdr = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(sdr); sdr.Dispose(); conn.Close(); //return dt; int pageCount = (int)cmd.Parameters["@PageCount"].Value; return pageCount; } //搜索按钮事件 protected void btnAllSearch_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; //注意转义字符的使用 } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); } //前一页事件 protected void lbtnPre_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; } PageIndex = Convert.ToInt16(this.lbtnPre.Text); PageIndex -= 1; if (PageIndex<=1) { PageIndex = 1; } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.lbtnPre.Text = PageIndex.ToString(); this.lbtnNext.Text = (PageIndex + 1).ToString(); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); } //后一页事件 protected void lbtnNext_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; } PageIndex=Convert.ToInt16(this.lbtnNext.Text); PageIndex += 1; int PageCount = getPageCount("", 1, 5); if (PageIndex>PageCount+1) { PageIndex = PageCount+1; } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.lbtnNext.Text = PageIndex.ToString(); this.lbtnPre.Text = (PageIndex - 1).ToString(); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); }
注:在两个翻页事件中利用了两按钮自身的文本值来保存参数,并相与影响
发表评论
-
ASP.net把datatable与list转成json输出
2014-12-10 12:02 824源代码: //DataTable转成Json ... -
开发问题集锦
2014-09-18 16:45 7131.SWFUpload问题 "触发uploadErr ... -
repeater嵌套使用
2014-09-16 18:38 775前台: <div id="m ... -
ASP.NET环境下使用KindEditor
2013-11-26 16:46 2907最新版的KindEditor,按照在线文档http://www ... -
ASP.NET+jQuery轮播效果
2013-08-21 08:03 2866<style type="text/css&q ... -
ASP.NET与Sql Server数据库的空数据的交互
2013-08-02 22:55 1000数据库中的字段:(1) ArticleId int型 外键 可 ... -
设置网页的Title、keywords和description
2013-03-20 15:35 876protected void Page_Load(obje ... -
再谈<<在ASP.NET中重写URL>>
2013-02-20 09:17 896将之前的<<在ASP.NET中重写URL>& ... -
VS2010母版版引入js和css文件
2012-10-31 17:15 876动态引入js文件和css样式表文件 1 引入js文件 Ht ... -
.NET网站中利用jQuery Ajax获取后台数据
2011-12-19 11:59 3332一般处理程序 using System.Web.Script. ... -
解决:Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)
2011-12-09 10:21 1279解决:Sys.WebForms.PageRequestMana ... -
在ASP.NET中重写URL
2011-12-08 18:02 759目标:将网页地址伪静态 实现:在Global.asax中改写: ... -
ashx文件使用Session(转)
2011-12-02 11:25 858查阅MSDN得到ashx文件要使用Session,必须实现Se ... -
作品展示
2011-11-05 16:27 828刚开发完成 看一下效果 [img][/img] ... -
ASP.NET上传大文件
2011-10-27 17:20 4028上网下一个neatupload 1.2.32的压缩包:(附压缩 ... -
asp .NET弹出窗口汇总(转)
2011-08-16 09:39 621注: //关闭,父窗口弹出对话框,子窗口直接关闭 this ... -
精通ASP.NET中弹出窗口技术(转)
2011-08-16 09:36 923摘要:本文讨论如 ... -
asp.net中的验证控件的使用
2010-04-07 16:35 1013前台: <h4>验证控件使用测试< ... -
.net利用AJAX实现局部刷新
2010-04-07 16:30 3347前台: <div> ... -
数据控件+PagedDataSource完成分页
2010-04-07 15:59 1048前台: <asp:Repeater ...
相关推荐
综上所述,`Hibernate+sqlserver2000分页`是一个结合了ORM框架和数据库分页策略的技术主题。在实际应用中,开发者需要根据业务需求选择合适的分页方法,并注意性能优化,如避免全表扫描,使用索引来加速查询等。理解...
在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...
标题中的“jdbc分页实例sqlserver2000”指的是使用Java Database Connectivity (JDBC) API来实现数据库分页查询的示例,特别是在SQL Server 2000这个特定的数据库管理系统上。JDBC是Java中用于与各种类型数据库交互...
综上所述,这个"struts2+sqlserver2000+jstl+分页"示例项目展示了如何整合这四个技术,构建一个能够动态分页显示数据库内容的Web应用。开发过程中,需要理解每个技术的作用,以及它们之间的协作方式。例如,Struts2...
mybatis中,sqlserver分页
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
本文将深入探讨一个针对 SQL Server 2000 的通用分页存储过程。该存储过程采用 `TOP + MAX(ID)` 的方法实现分页功能,并强调了关键字(`Keyword`)选择对于性能的影响。 #### 存储过程设计 此存储过程名为 `p_...
根据给定的SQL Server存储过程...总之,SQL Server的`GROUP BY`分组查询、存储过程和分页技术都是数据库管理和数据分析中不可或缺的工具。正确理解和灵活运用这些技术,可以极大地提升数据库应用程序的性能和用户体验。
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
然后,编写一个方法来获取数据库连接: ```java public static Connection getConnection() { String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; ...
`OFFSET`和`FETCH`是SQL Server 2000之后版本引入的分页关键字,但在2000版本中,我们需要使用其他方法,如`TOP`和`ROW_NUMBER()`函数。 二、分页TSQL 在SQL Server 2000中,由于没有内置的`OFFSET`和`FETCH`功能...
例如,MyBatis的`selectList`方法可以接受一个`RowBounds`对象,实现分页功能。 总结,Java中的分页查询涉及数据库操作、SQL构造和Java代码实现。理解分页原理和数据库分页语法,掌握JDBC基本用法,再根据实际需求...
SQL Server 2000下的通用分页存储过程.sql
这种方法涉及创建一个临时表,存储排序后的主键和rowId,然后使用这些信息进行分页。虽然这种方法提供了一种灵活的排序方式,但对内存资源的需求较高,不适合大数据量场景。 5. **ROW_NUMBER 函数**: SQL Server...
一个非常好的sql2005分页函数,简单实用,希望对你有所帮助
asp+sqlserver2005万能分页存储过程源码 sqlserver2005源码下载,很灵活的
这里,我们使用了一个公共表表达式(CTE),对`Products`表进行排序,然后通过`OFFSET`跳过前几行,再用`FETCH NEXT`获取接下来的指定行数,从而实现分页。 ### 传统子查询方式 对于早期版本的SQL Server,如2005...
在SQL Server中,有两种主要的分页方法:`TOP`和`OFFSET-FETCH`,以及`ROW_NUMBER()`函数配合`WHERE`子句。 1. **TOP 和 OFFSET-FETCH**: - `TOP`关键字用于获取查询结果的前n行。例如,`SELECT TOP 10 * FROM ...
**标题:“jsp+sqlserver分页”** 在Web开发中,分页是一种常见的用户界面设计技术,用于在大量数据中提供可浏览性。本项目基于`SQL Server 2005`数据库,结合`Struts`框架和`JavaBean`组件,实现了在JSP页面上进行...