`

用JDBC实现数据的分页

阅读更多

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

Java代码 复制代码
  1. package com.ajliu.pageOperation;   
  2.   
  3. import java.sql.*;   
  4.   
  5. import com.ajliu.UtilTool.*;   
  6. import java.util.*;   
  7. public class PageTest {   
  8.        
  9.     public static void operation(){   
  10.         System.out.println("===================================");   
  11.         System.out.println("====this is the split operation====");   
  12.         System.out.println("please input the number of the page");   
  13.     }   
  14.     public static void main(String args[]){   
  15.         operation();   
  16.         Connection conn=null;   
  17.         Statement stm=null;   
  18.         ResultSet rs=null;   
  19.            
  20.         try{   
  21.             conn=ConnectTool.getConnection();   
  22.             conn.setAutoCommit(false);   
  23.             /*---设置可滚动可更新的结果集-*/  
  24.             stm=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);   
  25.             /*--查出员工的ID号和姓名--*/  
  26.             String sql="select empno,Ename from emp order by sal";   
  27.             rs=stm.executeQuery(sql);   
  28.             System.out.println(rs.getFetchSize());   
  29.             Scanner scanner=new Scanner(System.in);   
  30.             int i=scanner.nextInt();//每页显示多少行   
  31.             int j=0;   
  32.             rs.next();   
  33.             do{   
  34.                 /*当前显示的行数是否达到了指定的行数*/  
  35.                 if(i==j){   
  36.                     j=0;   
  37.                     System.out.println("show the next page,please input the 'P'");//显示下一页   
  38.                     System.out.println("show the last page,please input the l ");//显示上一页   
  39.                     System.out.println("exit,please input the 'e'");   
  40.                     String a=scanner.next();    
  41.                     if(a.equals("l")){   
  42.                      int rowNum=rs.getRow()-2*(i+1);//获取上一页的起始下标   
  43.                      if(rowNum==0){ //判断是否是回到起始下标   
  44.                          rs.absolute(1);   
  45.                          System.out.println(rs.getInt(1)+"=="+rs.getString(2));   
  46.                          j=1;   
  47.                      }   
  48.                      else{     
  49.                          rs.absolute(rowNum);}//定位上一页的位置   
  50.                         continue;   
  51.                     }   
  52.                     if(a.equals("p")){   
  53.                         continue;   
  54.                     }   
  55.                     else{break;}   
  56.                        
  57.                        
  58.                 }   
  59.                 System.out.println(rs.getInt(1)+"=="+rs.getString(2));   
  60.                 j++;   
  61.                    
  62.             }while(rs.next());   
  63.             conn.commit();   
  64.         }catch(Exception e){   
  65.             e.printStackTrace();   
  66.             try {   
  67.                 conn.rollback();   
  68.             } catch (Exception e1) {   
  69.                 e1.printStackTrace();   
  70.             }finally{   
  71.                 ConnectTool.releasersc(rs, stm, conn);   
  72.             }   
  73.         }   
  74.     }   
  75.   
  76. }  
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);
			}
		}
	}

}



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

Java代码 复制代码
  1. /*  
  2.      * 功能:分页显示所有给定的结果集  
  3.      * 参数:rs代表要分页的结果集,pageNum代表的每页显示几条记录  
  4.      * */  
  5.     public  static void pagefilter(ResultSet rs,int pageNum)throws Exception{   
  6.            
  7.         Scanner scanner=new Scanner(System.in);   
  8.         int totalRow=rs.getFetchSize();//获取所查询的结果集的行数   
  9.         int totalPage=0;   
  10.         /*判断跟定的结果集是否可以刚好显示完,如果不能,则加上一页*/  
  11.         if(totalRow%pageNum==0){   
  12.             totalPage=totalRow/pageNum;   
  13.                
  14.         }   
  15.         else{   
  16.             totalPage=totalRow/pageNum+1;   
  17.         }   
  18.         do{   
  19.             int recordNum=0;//该页已经显示了几条记录   
  20.             System.out.println("exit,please input '100'");   
  21.             System.out.println("please input the page you want to show:");   
  22.             int number=scanner.nextInt();//显示第几页,   
  23.                
  24.             if(number==100){   
  25.                 break;   
  26.             }   
  27.                
  28.             if(number<1||number>totalPage){   
  29.                 System.out.println("你输入的页面不正确!");   
  30.                 continue;   
  31.             }   
  32.                
  33.             number=number-1;   
  34.             rs.absolute(number*pageNum+1);//定位到当显示的页面   
  35.             /*显示第几页的内容*/  
  36.                
  37.             while(recordNum!=pageNum){   
  38.                 System.out.println(rs.getInt(1)+"=="+rs.getString(2));   
  39.                 //判断下一个行是否有值   
  40.                 if(!rs.next()){   
  41.                     break;   
  42.                 } ;   
  43.                 recordNum++;       
  44.             }   
  45.                
  46.         }while(true);   
  47.            
  48.     }  
/*
	 * 功能:分页显示所有给定的结果集
	 * 参数: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);
		
	}

 

分享到:
评论

相关推荐

    jdbc实现分页功能

    本教程将详述如何使用JDBC实现MySQL数据库的分页功能,这对于处理大量数据的Web应用来说至关重要,可以提高用户体验并减轻服务器负载。 首先,我们需要了解分页的基本概念。分页是将大量查询结果分割成较小、易于...

    jdbc操作数据库分页

    它允许Java程序执行SQL语句,实现数据的增、删、查、改操作。当我们处理大量数据时,通常会采用分页的方式来提高用户体验和系统性能。本篇文章将详细讲解如何使用JDBC进行数据库分页操作。 首先,我们需要了解分页...

    使用jdbc_oracle实现的分页功能

    本示例着重讲解如何利用JDBC和Oracle数据库实现分页功能,同时涵盖一个表的基本操作:增加、删除和修改。 首先,我们需要了解JDBC。JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行...

    纯JSP +JDBC实现分页

    本教程主要围绕"纯JSP +JDBC实现分页"这一主题,为初学者提供详细的步骤和讲解,帮助理解JSP、分页和JDBC的基础知识。 首先,我们需要了解JSP(JavaServer Pages)的基本概念。JSP是Java技术的一种,它允许Web...

    sturts+oracle+jdbc实现分页

    总结来说,"sturts+oracle+jdbc实现分页"是一个典型的Java Web开发任务,涉及到Struts框架、Oracle数据库操作和JDBC技术的综合运用。通过编写Action类处理请求,利用Oracle的ROWNUM进行分页查询,并通过JDBC接口与...

    JDBC分页 物理分页 mysql实现

    本文将深入探讨使用JDBC(Java Database Connectivity)进行物理分页的实现方法,特别是在MySQL数据库中的应用。 首先,我们要了解JDBC是Java平台的标准API,它提供了与各种数据库交互的能力。在进行分页查询时,...

    JSP+JDBC_假分页

    在这个"JSP+JDBC_假分页"的主题中,我们将深入探讨如何在不使用数据库支持的分页功能下,通过JSP和JDBC实现一个简单的“假分页”机制。假分页通常指的是在服务器端一次性加载所有数据,然后在客户端(浏览器)进行...

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    Oracle JDBC分页实现是数据库操作中的一个重要环节,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页查询显得尤为重要。Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标...

    jdbc+serlvet分页查询代码

    【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...

    java基于原生的MySql的JDBC分页组件

    本篇将详细介绍如何基于原生的MySQL JDBC实现一个简单的分页组件,这对于初学者理解数据库操作和分页原理非常有帮助。 1. **JDBC基础**: JDBC是Java访问数据库的标准接口,它提供了连接数据库、执行SQL语句、处理...

    Struts2+jdbc+mysq分页Demo

    总结起来,"Struts2+jdbc+mysql分页Demo"是一个典型的Web开发案例,展示了如何整合Struts2、JDBC和MySQL实现数据的分页显示。通过这个示例,开发者可以学习到如何在Java Web环境中有效地处理大数据量,提高用户体验...

    jsp+jdbc+servlet分页带增删查改

    在这个"jsp+jdbc+servlet分页带增删查改"项目中,开发者使用了MVC(Model-View-Controller)架构模式,实现了对数据的CRUD(Create, Read, Update, Delete)操作,并提供了分页功能。** 1. **JSP(JavaServer Pages...

    在JDBC,hibernate中实现分页

    本文将深入探讨如何在Java开发环境中使用Hibernate框架以及JDBC结合SQL Server 2005来实现数据分页功能。 #### Hibernate中的分页实现 在Hibernate框架中实现分页功能相对较为简单。通过`Query`对象提供的方法即可...

    struts2.0实现的数据分页实现及实现分页步骤

    实现Struts2.0中的数据分页主要涉及以下几个步骤: 1. **数据库设计与连接**: - 首先,你需要创建一个数据库,比如这里提到的MySQL,并在其中存储数据。例如,创建一个名为"user1"的表,包含需要分页展示的数据。...

    web 开发 mysql+jdbc 实现信息分页显示

    在Web开发中,数据的分页...总之,使用MySQL和JDBC实现Web开发中的信息分页显示涉及到SQL查询、JDBC API的运用以及前端分页逻辑的设计。通过合理的优化策略,可以确保在大数据量场景下提供高效且用户友好的分页体验。

    oracle采用jdbc连接方式分页

    在Oracle数据库中,使用JDBC(Java Database Connectivity)进行数据操作是常见的做法,尤其是在需要进行大量数据处理或者分页查询时。JDBC提供了一种标准的API,使得Java应用程序能够与各种类型的数据库进行交互,...

    JDBC-MySQL分页查询

    本教程将深入探讨如何使用JDBC和MySQL实现分页查询。 首先,我们需要理解分页的基本概念。分页是将大型数据集分割成较小、更易管理的部分,通常每页包含一定数量的记录。在Web应用中,这通常通过设置“每页条目数”...

    jsp分页JDBC实现

    总的来说,JDBC实现的JSP分页是一种实用的技术,尤其在没有使用ORM框架如Hibernate的情况下。虽然不如ORM框架那样便捷,但理解这种基础方法有助于深入理解数据访问层的工作原理,为日后的开发打下坚实的基础。

    JDBC简单分页方案

    面对这一问题,开发者通常需要借助JDBC提供的资源自行实现分页。基本思路是首先初始化分页参数,如页面大小(pageSize)、当前页(currentPage)、记录总数(countOfRows)以及页面总数(countOfPages)。通过这些...

    MySql + JDBC +EasyUI DataGrid实现数据表格的展示和分页

    本项目通过集成MySQL数据库、Java的JDBC技术以及前端的EasyUI框架,实现了数据表格的展示和分页功能,这对于Web应用来说是常见的需求。下面将详细讲解这些技术的使用及其相互配合。 **1. MySQL数据库** MySQL是一款...

Global site tag (gtag.js) - Google Analytics