分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)

Eclipse中JSP连接SQLServer2012、Oracle与MySQL实战指南 JSP(Java Server Pages)通过嵌入Java代码或调用后端Servlet实现与数据库的交互,其核心依赖于JDBC(Java Database Connectivity)API。在请求到达服务器时,JSP页面被容器编译为Servlet,执行期间通过java.sql包中的接口与数据库建立连接、发送SQL语句并处理结果集。// 典型JDBC连接流程示例该过程涉及JDBC四要素:驱动类、连接URL、用户名密码认证及SQL执行器。 阅读详情

转贴请注明本贴地址以及作者:与莫扎特相遇(bobrow)

同学在做jsp实现一个网上交易平台时一碰到了这个问题,我想这个问题一定具有代表性,因为分页显示技术要用到的地方确实很多。为了减少初学者在这方面花的时间,我在一些资料的基础上,总结了分页显示的方法。

方法一:
最常用的方法,就是使用直接中数据库中获得所有行的结果集,然后通过定位标志,使用next()。
示例代码(数据库使用mysql):
//变量声明     
 Connection  sqlCon;  //数据库连接对象     
 Statement  sqlStmt;     
 ResultSet  sqlRst;  //结果集对象     
 String  strCon;  //数据库连接字符串     
 String  strSQL;  //SQL语句     
 int  intPageSize;  //一页显示的记录数     
 int  intRowCount;  //记录总行数     
 int  intPageCount;  //总页数     
 int  intPage;  //待显示页码
 int i;
/**
 *获得总的记录行数
**/
Class.forName("com.mysql.jdbc.Driver").newInstance();
strCon  =  "jdbc:mysql://localhost:3306/test";
sqlCon  =  java.sql.DriverManager.getConnection(strCon,"root","1");
sqlStmt  =  sqlCon.createStatement();           
strSQL  =  "select count(*) from message";     
sqlRst  =  sqlStmt.executeQuery(strSQL); //执行SQL语句并取得结果集           
sqlRst.next();  //记录集刚打开的时候,指针位于第一条记录之前     
intRowCount  =  sqlRst.getInt(1); //获取总的数据记录行数    
sqlRst.close();  //关闭结果集

/**
 *记算总页数
**/     
intPageCount  =  (intRowCount+intPageSize-1) / intPageSize;

/**
 *获得结果集
**/    
strSQL  =  "select  time,mail,content  from message ORDER BY time DESC";          
sqlRst  =  sqlStmt.executeQuery(strSQL);
//将记录指针定位到待显示页的第一条记录上     
i  =  (intPage-1)  *  intPageSize;
for(int j=0;j<i;j++)
{
   sqlRst.next();
}

/**
 *使用next()以及行数标志限定当前页显示的数据
**/
while(i<intPageSize  &&  sqlRst.next())
{
……
……
<tr>     
<td>用户名:<%=sqlRst.getString("time")%></td>   
</tr>
……
……
}

这种方法是最普遍使用的,对于少量数据用这个方法是可以接受的。但是,如果table中的数据有几万几十万行呢?全部放入结果集返回?这时,这个方法就不行了。

方法二:
使用数据库控制,返回当前页需要显示的数据。
a.使用mysql控制:
select * from user
order by Host
limit m, n
结果返回的是第m+1行到第n行的数据集。
比如
select * from user
order by Host
limit 1, 5
返回的是第2行到第5行的数据集

b.使用sqlserver
SELECT *
FROM (SELECT TOP m *
        FROM (SELECT TOP n *
                FROM Customers) A
        ORDER BY CustomerID DESC) B
ORDER BY CustomerID
获得的结果集数据为第n-m+1行到第n行。
对整个过程的解释:
首先按照升序得到前n行的结果集A,然后按照降序从A中得到后m行的结果集B,最后按照升序对B进行重新排序,返回结果集。
其中CustomerID为主键

比如:
SELECT *
FROM (SELECT TOP 5 *
        FROM (SELECT TOP 10 *
                FROM Customers) A
        ORDER BY CustomerID DESC) B
ORDER BY CustomerID
的意思就是返回包含第6行到第10行的数据结果集。

c.使用Oracle:
select * from (select rownum r ,* from test) tt
where tt.r > 50 and tt.r <= 100;

JSP数据库连接大全:MySQL、Oracle与SQLServer JavaServer Pages(JSP)是一种动态网页技术,允许开发者将Java代码嵌入HTML页面中。JSP页面在服务器端被转换成Servlet,随后由Java虚拟机执行,生成动态内容返回给客户端。作为一种服务器端技术,JSP与ASP、PHP等技术类似,但更为强大,因为它完全基于Java平台。Java Database Connectivity (JDBC) 是一种用于执行SQL语句的Java API,它定义了客户端如何与数据库进行通信的标准方法。 阅读详情

相关推荐

AFC自动售检票系统与人工智能AI结合的关键应用方案

针对售检票、大客流管理、设备运维及服务优化提供了可落地的技术支持和实现细节,可作为地铁智慧交通项目的实践参考

leijinquan01的博客 1513

sql server和mysql中分别实现分页功能

MySQL 在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录, 例如:select * from tablename limit m, n sql="select * from users order by userId limit "+(pageNow-1)*pageSize+","+pageSize ; 获取分页后每页的数据: //分页显示用户的 信息...

weixin_30852419的博客 165

Matlab处理气象数据(六)数据的面积加权

由于地理投影导致导致每个像元实际地面面积不同,越靠近北极实际面积越小,越靠近赤道实际面积越大,如果不进行面积加权就简单平均,会导致温度较实际温度偏低。 用以下公式计算地理投影每个像元的面积: double pi = 3.1415926; double R = 6371007.181; //units - m double area = (pi/180.0)*R*R*fabs(sin(dLat1/180.0*pi) - sin(dLat2/180.0*pi)) * fabs(dLon1 - dLo

设计の诗 1万+

springboot + 多数据源mysql、oracle + pagehelper 分页

springboot + 多数据源mysql、oracle + pagehelper 分页 项目使用maven依赖 1 配置多数据源,以及多数据源分页,导包 &amp;lt;!--mysql连接 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt; &amp;lt;arti

随便男是我的博客 8020

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

基于SOCKET的***网络软件的设计与实现

二、基于SOCKET的网络软件的需求。2、概要设计:画出软件系统结构图。3、详细设计:软件的详细设计,如类图、序列图、重要的算法流程图或伪代码,等等。4、实现:软件基本功能相关的截图和关键代码。

Recursions的博客 1371

mysql分页原理,pagehelper分页原理浅析

先看一下pagehelper的简单用法:com.github.pagehelperpagehelper-spring-boot-starter1.2.5 我使用的版本 依赖首先要注册pagehelper:@Beanpublic PageHelpercreatePaeHelper(){PageHelper page=new PageHelper();return page;}使用:PageHelpe...

weixin_29620579的博客 990

【数字孪生工业应用实战】第2篇:数字孪生系统架构设计与技术选型——从“作秀”到“实干”的骨架构建

本文系统剖析了数字孪生系统从“作秀”到“实干”的架构设计关键。针对多数项目在POC转生产时因架构混乱、选型盲目而失败的问题,深入阐述了四层分层架构(感知层、传输层、模型层、应用层)的设计原则,重点解析了感知层的异构适配与边缘预处理、传输层的异步解耦与多模式通信等工程细节。结合OPC UA、MQTT、EdgeX Foundry等主流技术选型对比,以及汽车焊装车间边缘智能网关的实战代码,提供了从零搭建微型孪生系统的完整指导。旨在帮助工程师建立清晰的选型决策逻辑,构建稳定、可演进的数字孪生“骨架”。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 267

springBoot项目使用pagehelper进行多种数据库分页

1.使用pagehelper进行分页,如果在application.yml配置为 pagehelper: helper-dialect: mysql 这种情况下,默认只对mysql数据库进行分页,如果查询sqlserver或者oracle数据库进行分页就会出现异常,此时需要修改配置文件,然后就可以自动对多种数据库分页 pagehelper: helper-dialect: mysql # 默认false,当为true时,自动检验适合的数据库 auto-dialect: true # 这

gkkljy的博客 2870

OPTEE:TA命令操作的实现(三)

上文我们创建好了通道,现在就是操作,怎么操作TA呢?REE侧的CA执行创建会话操作成功后,CA就可使用获取到的调用来让TA执行特定的命令。通过ioctl的系统调用发送到OP-TEE的驱动中,保存在共享内存中,并触发安全监控模式调用(smc)切换到Monitor模式(ARMv7)或EL3(ARMv8)中进行安全世界状态的处理。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1268

yolov11添加P2小目标检测头与添加P6超大目标检测头

本文介绍了YOLO目标检测模型中上下采样的原理及应用。上采样通过插值算法放大特征图,YOLO通常采用最近邻插值;下采样则通过带步长的卷积缩小特征图提取高层语义特征。文章详细阐述了这两种操作在YOLO中的实现方式、结构特点及对称性问题,指出下采样后会使用C3模块进行特征整合,上采样后通过concat抑制分割感。此外,还分析了不同分辨率特征图适合检测不同尺寸目标的原因,并提出添加4倍小目标检测头的方法,即对上采样后的特征进行concat和C3模块处理。最后给出了YOLOv5原模型结构和添加4倍检测头后的结构对比

m0_64661770的博客 821

jsp中的分页

title: JSP分页技术实现 summary:使用工具类实现通用分页处理 author: evan_zhao email: evan_zhao@hotmail.com   目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次

thesumous的专栏 759

uniapp(全端兼容) - 最新详细实现瀑布流列表及布局设计,uni-app全平台兼容的瀑布流示例,view容器自适应瀑布流布局,图片瀑布流布局、图像+文字卡片式瀑布流,类似小红书(详细示例代码)

uni-app,瀑布流,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,瀑布流布局,如何实现图片瀑布流,怎么做文字+图像瀑布流,uniapp仿小红书笔记瀑布流效果,uniAPP仿快手抖音布局列表,瀑布流列表详细教程,编译所有平台都能用的瀑布流列表,商品瀑布流列表,图文列表,小程序瀑布流,页面触底懒加载,瀑布流插件,详细示例代码教程,uni-app H5实现瀑布流效果,uniapp小程序做瀑布流,纯css瀑布流,用uniapp写瀑布流商品列表,

✅ 精选推荐文章 1万+

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

【代码】sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

weixin_67840381的博客 1973

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

分页显示问题(jsp/sqlserver/mysql/oracle)

方法一:最常用的方法,就是使用直接中数据库中获得所有行的结果集,然后通过定位标志,使用next()。示例代码(数据库使用mysql)://变量声明       Connection  sqlCon;  //数据库连接对象       Statement  sqlStmt;       ResultSet  sqlRst;  //结果集对象       String  strCon;  //数据库连

THE GAME 1232

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

解决MVC下分页显示的问题

前几天做一个系统,用到的是Tomcat+struts+Mysql的MVC框架。由于很多模块都需要分页,网上很多方法都不是很适合,自己想写一个分页的方法,让所有的模块都能够使用,好不容易花了几天把问题给搞清楚了,觉得还是写些东西跟大家分享一下。如果那位有更好的方法的话,咱们共同探讨一下,让更多的人有所收获。在写这个代码的时候参考了网友evan_zhao的意见(http://www.javaresea

998

分页显示(jsp,sqlserver,mysql,oracle)

分页显示(jsp,sqlserver,mysql,oracle) 方法一: 最常用的方法,就是使用直接中数据库中获得所有行的结果集,然后通过定位标志,使用next()。 示例代码(数据库使用mysql): [code="java"] //变量声明 Connection sqlCon; //数据库连接对象 Statement sqlStmt; ...

greatwqs : Where amazing happens ... 224

MYSQL与MSSQL比较、MSSQL报错注入

MYSQL与MSSQL比较、MSSQL报错注入1. sql server和mysql数据库的区别函数的区别后端语言2.mssql数据库2.1 mssql的内置函数2.2 mssql内置表查询库名两种方式查询表名两种方式3.orcale数据库3.1 特殊表3.2 内置函数3.3 字符串拼接 mysql 1.弱类型语言 mssql 强类型语言 orcale 强类型语言 access 1. sql server和mysql数据库的区别 函数的区别 db_name() 和 databa

buffedon的博客 785

JSP分页技术实现

title: JSP分页技术实现 summary:使用工具类实现通用分页处理 author: evan_zhao email: evan_zhao@hotmail.com 目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果

a17909863341的专栏 610
下一篇: 中学语文老师课堂上读的一首新诗
bobrow
博客等级 码龄22年 0粉丝 9原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值