mysql分页查询数据库在jsp页面显示_jsp的分页查询的代码(mysql数据库)

这个功能一共创建了两个javabean组件和一个jsp页面显示分页页面,第一个是处理以数据库连接的javabean,第一个javabean是处理分页查询结果的代码,第三个jsp是调用第二个javabean,显示分页查询结果!

//下面是连接mysql数据库的一个javabean的代码:

package data;

import java.sql.*;

public class LoginData{

Connection conn=null;

public LoginData(){

this.connect();

}

public Connection getConn(){

return this.conn;

}

public boolean connect(){

try{

//使用JDBC桥创建数据库连接

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

//使用DriverManager类的getConnection()方法建立连接

//第一个参数定义用户名,第二个参数定义密码

this.conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/logindemo?useUnicode=true&characterEncoding=gb2312","root","123456");

}catch(Exception ex){

ex.printStackTrace();

return false;

}

return true;

}

}

//下面是一个javabean的处理mysql数据库的分页显示查询的代码

package data;

import java.sql.*;

import java.util.*;

public class strongSplitPage

{

private Connection conn=null;

private Statement stmt=null;

private ResultSet rs=null;

private ResultSetMetaData rsmd=null;

//sql 查询语句

private String sqlStr;

//总纪录数目

private int rowCount;

//所分得逻辑页数

private int pageCount;

//每页显示的纪录数目

private int pageSize;

//定义表的列数目

private int columnCount;

private int irows;

public void initialize(String sqlStr,int pageSize,int showPage)

{

this.sqlStr=sqlStr;

this.irows=pageSize*(showPage-1);

this.pageSize=pageSize;

try

{

LoginData loginData=new data.LoginData();

this.conn=loginData.getConn();

this.stmt=this.conn.createStatement();

this.rs=this.stmt.executeQuery(this.sqlStr);

this.rsmd=this.rs.getMetaData();

if(this.rs!=null)

{

this.rs.last();

this.rowCount=this.rs.getRow();

this.rs.first();

this.columnCount=this.rsmd.getColumnCount();

this.pageCount=(this.rowCount-1)/this.pageSize+1;

this.rs.close();

this.stmt.close();

}

this.sqlStr=this.sqlStr+" limit "+this.irows+","+this.pageSize;

this.stmt=this.conn.createStatement();

this.rs=this.stmt.executeQuery(this.sqlStr);

}catch(Exception ex)

{

ex.printStackTrace();

}

}

public Vector getPage()

{

Vector vData=new Vector();

try

{

if(this.rs!=null)

{

while(this.rs.next())

{

String[] sData=new String[this.columnCount];

for(int j=0;j

{

sData[j]=this.rs.getString(j+1);

}

vData.addElement(sData);

}

this.rs.close();

this.stmt.close();

this.conn.close();

}

}catch(Exception ex)

{

ex.printStackTrace();

}

return vData;

}

//获得页面总数

public int getPageCount()

{

return this.pageCount;

}

//获得数据表中总纪录数

public int getRowCount()

{

return this.rowCount;

}

}

//下面是jsp显示分页页面

//显示每页的纪录数

int pageSize=10;

String sqlStr="";

//当前页

int showPage=1;

%>

sqlStr="select * from userinfo order by id ";

String strPage=null;

//获得跳转到的页面

strPage=request.getParameter("showPage");

if(strPage==null){

showPage=1;

pages.initialize(sqlStr,pageSize,showPage);

}else{

try{

showPage=Integer.parseInt(strPage);

pages.initialize(sqlStr,pageSize,showPage);

}catch(NumberFormatException ex){

showPage=1;

pages.initialize(sqlStr,pageSize,showPage);

}

if(showPage<1){

showPage=1;

pages.initialize(sqlStr,pageSize,showPage);

}

if(showPage>pages.getPageCount()){

showPage=pages.getPageCount();

pages.initialize(sqlStr,pageSize,showPage);

}

}

//取得要显示的数据集合

Vector vData=pages.getPage();

%>

分页显示

个人基本信息

编号学号姓名

for(int i=0;i

{

//显示数据数

String[] sData=(String[])vData.get(i);

%>

}

%>

条 条/页  第页/共页  [首页

//判断“上一页”链接是否要显示

if(showPage>1){

%>

[上一页

}

else{

%>

[上一页] 

}

//判断“下一页”链接是否显示

if(showPage

{

%>

[下一页

}

else{

%>

[下一页] 

}

%>

[尾页] 转到

for(int x=1;x<=pages.getPageCount();x++)

{

%>

if(showPage==x){

out.println("selected");

}

%> >

}

%>

页   

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-07-19 07:19

浏览 2069

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用法:不用写连接数据库等多余代码(在ConnLink.java文件中修改一下相关属性就可以了,如果不想写分页,在ConnLink.java文件中DBlink()方法可以返回一个Statement对象,然后就可以利用这个返回值去写你想要的代码了),只要建立一个Page对象,调用SelectRS()方法,将SQL语句当前页码和每页要显示的条数正确的写入。SelectRS()会自动返回一个结果集rs,然后用rs遍历输出结果。用getFrist()、getBack()、getLast()、getNext()等方法进行取得上一页的页码,下一面的页码就可以了。 看了之后是不是很心动呢~~~ HOHO~~其实我的代码有很多不足,例如:是不是可以做成通用的分页?也可以把DBlink()中的conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");用的连接参数写在xml中生成一个JAR包,这样才更有扩展性,你说呢~~。希望高手能继续改良,让这段代码更精一些。HOHO~~~~改完之的一定要发到网上供大家参考和使用。 刚刚才发现Page.java文件是空的,在这里我就加上吧!实在是不好意思了 package com.SpreadPage; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.DateBase.*; public class Page extends ConnLink{ private Statement stmt=null; private ResultSet rs=null; private int row=0; private int num=0; private int page=0; private int list=0; //搜索去向 搜索条件 当前第几页 每页条数 public ResultSet SelectRS(String select,int page_num,int page) { this.num=page_num; this.page=page; String sql=select+" limit "+(page_num*page)+","+(page_num*page+page); //System.out.println(sql); try { stmt=DBlink(); rs=stmt.executeQuery(select); rs.first(); rs.last(); this.row=rs.getRow(); System.out.println(sql); if(rs!=null) { rs.close(); } if(stmt==null) { System.out.println("Stmt无连接"); return null; } rs=stmt.executeQuery(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs; } //获得总记录数 public int getRow() { return row; } //第一页 public int getFrist() { return 0; } //最后一页 public int getBack() { if(getRow()%page==0) { return getRow()/page; } return (getRow()/page)+1; } //上一页 public int getLast() { if(num<=0) { return 0; } return (num-1); } //下一页 public int getNext() { int back=getBack(); if(num>=back) { return num; } return (num+1); } //当前页的条数 public int getNow() { try { rs.first(); rs.last(); list=rs.getRow(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } //当前第几页 public int getPage() { int sum=(num*page-page)+1; if(getRow()<sum) return 0; return sum; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值