mysql linesize_MySQL假分页

建立数据库:

CREATE DATABASE emp;

USE emp;

-- 建立person表

CREATE TABLE person

(

-- 生成一个流水号,观察显示的记录数

id int AUTO_INCREMENT NOT NULL PRIMARY KEY ,

-- 用户的登陆ID

uid varchar(32) ,

-- 用户的真实姓名

name varchar(32) ,

-- 用户的登陆密码

password varchar(20)

) ;

第一步:

能够显示出所有的记录:

分页显示

人员列表


final String DBDRIVER="com.mysql.jdbc.Driver";

final String DBURL="jdbc:mysql://localhost:3306/emp";

final String DBUSER="root";

final String DBPASSWORD="sa";

Connection conn=null;

%>

try{

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);

String sql="select id,uid,name,password from person";

PreparedStatement pstmt=conn.prepareStatement(sql);

ResultSet rs=pstmt.executeQuery();

%>

编号登陆名称姓名密码操作

int i=0; //判断是否有数据的标识,如果有数据继续执行,如果没有数据,为0

while(rs.next()){

i++;

int id=rs.getInt(1);

String uid=rs.getString(2);

String name=rs.getString(3);

String password=rs.getString(4);

%>

删除更新

}

rs.close();

pstmt.close();

if(i==0){ //没有任何数据

%>

没有任何数据!

}

%>

}catch(Exception e){

%>

系统出错!

}finally{

conn.close();

}

%>

第二步:

如果要控制每页显示的记录数:只要操作ResultSet即可;原先是whle(rs.next())会把所有的记录数显示出来,此时只要改成if(rs.next()),在外层套循环的次数(即显示的记录数),即可控制每页显示的记录数。

for(int x=0;x

if(rs.next()){

还有一个重要的步骤就是如果要显示的是第N页的数据,则需要将前几页的数据空出去

for(int x=0;x

rs.next();//当前是第几页,就要把前几页的数据空出来,用rs.next()循环出去

}

第三步:

首页   上一页    下一页    尾页

用button进行控制,触发onClick事件,传递页数

采用script进行控制,进行页数的处理。

需要解决的问题是:

1,计算出总记录数数

String sql = "SELECT COUNT(id) from person" ;

pstmt = conn.prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next()){

allRecorders = rs.getInt(1) ; //得到所有的记录数

}

2,计算总页数

//计算总页数

/*有如下情况:

总记录数是23条,23/每页显示的记录(10)=2,实际是要有三页的记录数

此时采用算法(allRecorders+lineSize-1)/lineSize

*/

pageSize=(allRecorders+lineSize-1)/lineSize;

分页显示

人员列表


final String jspUrl="list_person_false_03.jsp";

%>

//定义分页变量

//1,定义每页要显示的记录数

int lineSize=10;

//2,定义变量:当前是第几页

int currentPage=1;

//计算总页数

int pageSize=0;

// 总记录数/每页显示的记录数

int allRecorders=10;

%>

try{

//接受传过来的当前页

currentPage=Integer.parseInt(request.getParameter("cp"));

}catch(Exception e){}

%>

final String DBDRIVER="com.mysql.jdbc.Driver";

final String DBURL="jdbc:mysql://localhost:3306/mldn";

final String DBUSER="root";

final String DBPASSWORD="sa";

Connection conn=null;

%>

try{

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);

String sql="select count(id) from person"; //查询总记录数

PreparedStatement pstmt=null;

pstmt=conn.prepareStatement(sql);

ResultSet rs=pstmt.executeQuery();

if(rs.next()){

allRecorders=rs.getInt(1); //得到所有的记录数

}

rs.close();

pstmt.close();

//计算总页数

/*有如下情况:

总记录数是23条,23/每页显示的记录(10)=2,实际是要有三页的记录数

此时采用算法(allRecorders+lineSize-1)/lineSize

*/

pageSize=(allRecorders+lineSize-1)/lineSize;

sql="select id,uid,name,password from person";

pstmt=conn.prepareStatement(sql);

rs=pstmt.executeQuery();

%>

function openPage(curpage){

//用隐藏文本框接受参数

document.spage.cp.value=curpage;

//提交

document.spage.submit();

}

编号登陆名称姓名密码操作

int i=0; //判断是否有数据的标识,如果有数据继续执行,如果没有数据,为0

for(int x=0;x

rs.next();//当前是第几页,就要把前几页的数据空出来,用rs.next()循环出去

}

for(int x=0;x

if(rs.next()){

i++;

int id=rs.getInt(1);

String uid=rs.getString(2);

String name=rs.getString(3);

String password=rs.getString(4);

%>

删除更新

}

}

rs.close();

pstmt.close();

if(i==0){ //没有任何数据

%>

没有任何数据!

}

%>

}catch(Exception e){

%>

系统出错!

}finally{

conn.close();

}

%>

第四步:

显示出当前页和总页数;

如果按照之前的代码,会出现以下的情况

4a015f5f50bffcedc5f6d6ceb9603404.png

此时修改代码,主要是进行了按钮的使用问题,用disabled可以让按钮无法使用

>

>

>

>

第五步:

用下拉列表框选择页数:

触发onChange事件:

跳转到:

for(int x=0;x<=pageSize;x++){

%>

>

}

%>

function selOpenPage(){

document.spage.cp.value=document.spage.selpage.value;

document.spage.submit();

}

完整代码

分页显示

人员列表


final String jspUrl="list_person_false_05.jsp";

%>

//定义分页变量

//1,定义每页要显示的记录数

int lineSize=10;

//2,定义变量:当前是第几页

int currentPage=1;

//计算总页数

int pageSize=0;

// 总记录数/每页显示的记录数

int allRecorders=10;

%>

try{

//接受传过来的当前页

currentPage=Integer.parseInt(request.getParameter("cp"));

}catch(Exception e){}

%>

final String DBDRIVER="com.mysql.jdbc.Driver";

final String DBURL="jdbc:mysql://localhost:3306/mldn";

final String DBUSER="root";

final String DBPASSWORD="sa";

Connection conn=null;

%>

try{

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);

String sql="select count(id) from person"; //查询总记录数

PreparedStatement pstmt=null;

pstmt=conn.prepareStatement(sql);

ResultSet rs=pstmt.executeQuery();

if(rs.next()){

allRecorders=rs.getInt(1); //得到所有的记录数

}

rs.close();

pstmt.close();

//计算总页数

/*有如下情况:

总记录数是23条,23/每页显示的记录(10)=2,实际是要有三页的记录数

此时采用算法(allRecorders+lineSize-1)/lineSize

*/

pageSize=(allRecorders+lineSize-1)/lineSize;

sql="select id,uid,name,password from person";

pstmt=conn.prepareStatement(sql);

rs=pstmt.executeQuery();

%>

function openPage(curpage){

//用隐藏文本框接受参数

document.spage.cp.value=curpage;

//提交

document.spage.submit();

}

function selOpenPage(){

document.spage.cp.value=document.spage.selpage.value;

document.spage.submit();

}

>

>

>

>

/

跳转到:

for(int x=0;x<=pageSize;x++){

%>

>

}

%>

编号登陆名称姓名密码操作

int i=0; //判断是否有数据的标识,如果有数据继续执行,如果没有数据,为0

for(int x=0;x

rs.next();//当前是第几页,就要把前几页的数据空出来,用rs.next()循环出去

}

for(int x=0;x

if(rs.next()){

i++;

int id=rs.getInt(1);

String uid=rs.getString(2);

String name=rs.getString(3);

String password=rs.getString(4);

%>

删除更新

}

}

rs.close();

pstmt.close();

if(i==0){ //没有任何数据

%>

没有任何数据!

}

%>

}catch(Exception e){

%>

系统出错!

}finally{

conn.close();

}

%>

85e0f6f428f6b411dd0b3464c973b341.png

大小: 22 KB

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-09-12 10:35

浏览 1015

分类:数据库

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值