用JDBC实现数据的分页显示

本文介绍了一种使用Java和SQL进行数据分页的技术。通过resultSet的absolute()方法实现数据的定位和分页显示。代码示例展示了如何设置可滚动可更新的结果集,并按需显示特定页面的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据分页主要用到了resultSet的absolute()方法用来定位到某一行上去,其代码如下:
package com.ajliu.pageOperation;

import java.sql.*;

import com.ajliu.UtilTool.*;
import java.util.*;
public class PageTest {

public static void operation(){
System.out.println("===================================");
System.out.println("====this is the split operation====");
System.out.println("please input the number of the page");
}
public static void main(String args[]){
operation();
Connection conn=null;
Statement stm=null;
ResultSet rs=null;

try{
conn=ConnectTool.getConnection();
conn.setAutoCommit(false);
/*---设置可滚动可更新的结果集-*/
stm=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
/*--查出员工的ID号和姓名--*/
String sql="select empno,Ename from emp order by sal";
rs=stm.executeQuery(sql);
System.out.println(rs.getFetchSize());
Scanner scanner=new Scanner(System.in);
int i=scanner.nextInt();//每页显示多少行
int j=0;
rs.next();
do{
/*当前显示的行数是否达到了指定的行数*/
if(i==j){
j=0;
System.out.println("show the next page,please input the 'P'");//显示下一页
System.out.println("show the last page,please input the l ");//显示上一页
System.out.println("exit,please input the 'e'");
String a=scanner.next();
if(a.equals("l")){
int rowNum=rs.getRow()-2*(i+1);//获取上一页的起始下标
if(rowNum==0){ //判断是否是回到起始下标
rs.absolute(1);
System.out.println(rs.getInt(1)+"=="+rs.getString(2));
j=1;
}
else{
rs.absolute(rowNum);}//定位上一页的位置
continue;
}
if(a.equals("p")){
continue;
}
else{break;}


}
System.out.println(rs.getInt(1)+"=="+rs.getString(2));
j++;

}while(rs.next());
conn.commit();
}catch(Exception e){
e.printStackTrace();
try {
conn.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}finally{
ConnectTool.releasersc(rs, stm, conn);
}
}
}

}


当我们需要定位到某一页的时候,或则是显示特定的某一页的时候,我们可以用如下的方法实现:

/*
* 功能:分页显示所有给定的结果集
* 参数:rs代表要分页的结果集,pageNum代表的每页显示几条记录
* */
public static void pagefilter(ResultSet rs,int pageNum)throws Exception{

Scanner scanner=new Scanner(System.in);
int totalRow=rs.getFetchSize();//获取所查询的结果集的行数
int totalPage=0;
/*判断跟定的结果集是否可以刚好显示完,如果不能,则加上一页*/
if(totalRow%pageNum==0){
totalPage=totalRow/pageNum;

}
else{
totalPage=totalRow/pageNum+1;
}
do{
int recordNum=0;//该页已经显示了几条记录
System.out.println("exit,please input '100'");
System.out.println("please input the page you want to show:");
int number=scanner.nextInt();//显示第几页,

if(number==100){
break;
}

if(number<1||number>totalPage){
System.out.println("你输入的页面不正确!");
continue;
}

number=number-1;
rs.absolute(number*pageNum+1);//定位到当显示的页面
/*显示第几页的内容*/

while(recordNum!=pageNum){
System.out.println(rs.getInt(1)+"=="+rs.getString(2));
//判断下一个行是否有值
if(!rs.next()){
break;
} ;
recordNum++;
}

}while(true);

}
内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读议:由于本资源涉及较多底层概念和技术细节,议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值