Topic: 为什么这样不能分页呢?

  Print this page

1.为什么这样不能分页呢? Copy to clipboard
Posted by: sisili
Posted on: 2004-09-15 22:01

我的目标是每6条记录在一页显示,可是运行结果是所有记录都被显示出来了,而且只有“上一页”,没有“下一页”。
请大虾们帮我看看吧,我想了半天也没想出来。
谢谢

<%@ page contentType="text/html; charset=GBK" %>
<jsp:useBean id="webDataModule" scope="session" class="data.WebDataModule" />
<%@page import="java.sql.*,
java.util.*,
java.sql.Date"
%>
<html>
<head>
<title>网上订餐</title>
</head>
<body>
<center>
<h3>食堂菜单</h3><br><br>
<form action="search.jsp" method="post">
菜名:<input name="foodNameSearch" type="text" size="30">
<input name="search" type="submit" value="搜索">
</form>
<%
//设置获取参数的编码机制
request.setCharacterEncoding("GBK");
int id =1;
//创建上一页的变量
String priorPage = "";
//创建下一页的变量
String nextPage = "";
//创建记录路径的变量
String path = "";

//取得路径值
String tempPath = request.getParameter("path");
//单击下一页联接的处理代码,增加路径值
if(request.getParameter("isNext") != null){
//创建当前路径值
path = tempPath + id + "@@";
//分柝上一页传入goodsIdPath
StringTokenizer paths = new StringTokenizer(tempPath, "@@");
//取得路径的通过总数
int pathCount = paths.countTokens();
//取得上一页的最前标识
for(int i = 0; i < pathCount; i++){
priorPage = paths.nextToken();
}
}else if(request.getParameter("isPrior") != null){
//单击上一页的处理代码,减少路径值
//分柝上一页传入路径
StringTokenizer paths = new StringTokenizer(tempPath, "@@");
//减1的意义是删除一个路径值
int pathCount = paths.countTokens() - 1;
//如果只有一个路径值,保持路径值不变
if(pathCount == 0){
path = tempPath;
}
//进入添加路径循环,删除最后一个路径值
for(int i = 0; i < pathCount; i++){
String temp = paths.nextToken();
//将路径的前2个值作为上一页的最前的商品标识
if(i == (pathCount - 2)){priorPage = temp;}
path = path + temp + "@@";
}
}else{
//直接进入页面的处理代码
//创建当前路径值
path = id + "@@";
}
ResultSet HallMenuRs = webDataModule.getHallMenuRs(id);
//声明保存记录数的变量
int HallMenuCount = 0;
while(HallMenuRs.next()){
//取得id
id = HallMenuRs.getInt("id");
//取得window
int window = HallMenuRs.getInt("window");
//取得foodName
String foodName = HallMenuRs.getString("foodName");
//取得foodPrice
String foodPrice = HallMenuRs.getString("foodPrice");
HallMenuCount++;
%>
<a href="login.jsp?id=<%=id%>">
<%=id%> - <%=window%> - <%=foodName%>- <%=foodPrice%>
</a><br><br>
<%
}
//取得下一页码
nextPage = String.valueOf(id + 1);
%>
<p>
<a href="index.jsp?id=<%=priorPage%>&isPrior=true&path=<%=path%>">
上一页
</a>
   
<%--判断下一页是否显示--%>
<%if(HallMenuCount == 6){%>
<a href="index.jsp?id=<%=nextPage%>&isNext=true&path=<%=path%>">
下一页
</a>
<%}%>

</p>
</center>
</body>
</html>

2.Re:为什么这样不能分页呢? [Re: sisili] Copy to clipboard
Posted by: sunzy19810705
Posted on: 2004-09-16 08:37

看不出来有什么错误啊,是不是你别的页面有问题呢?都帖出来大家看看啊

3.Re:为什么这样不能分页呢? [Re: sisili] Copy to clipboard
Posted by: sisili
Posted on: 2004-09-16 10:30

我把数据库连接bean和运行结果的图也贴出来,请大家给我看看吧

WebDataModule.java如下所示:

import com.borland.dx.dataset.*;
import com.borland.dx.sql.dataset.*;
import java.sql.*;

public class WebDataModule {
public Connection conn;
Statement totalStmt;
Statement StudentInfoPageStmt;
Statement HallMenuPageStmt;
ResultSet HallMenuRs;
ResultSet StudentInfoRs;
public WebDataModule(){
try {jbInit();}
catch(Exception e) {e.printStackTrace();}
}
private void jbInit() throws Exception {
String url = "jdbc:odbc:OrderFoodSQLServer";
//创建连接类
Connection conn;
//告诉程序使用jdbc与odbc桥创建数据库联接
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//使用DriverManager类的getConnection()方法建立联接,
//第一个字符参数定义用户名,第二个字符参数定义密码
conn = DriverManager.getConnection(url, "sa", "sa");

//创建获取全部数据的Statement类
totalStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//创建获取分页数据的Statement类,取得StudentInfor数据表的数据
StudentInfoPageStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//创建获取分页数据的Statement类,取得HallMenu数据表的数据
HallMenuPageStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//设置每页的记录数
StudentInfoPageStmt.setMaxRowsDevil;
HallMenuPageStmt.setMaxRowsDevil;
}
//取得食堂菜单数据表的数据
public ResultSet getHallMenuRs() {
try{
HallMenuRs = totalStmt.executeQuery("select * from HallMenu");
}catch(Exception ex){ex.printStackTrace();}
return HallMenuRs;
}
//分页取得学生信息数据表的数据
public ResultSet getStudentInfoRs(int id) {
try{
StudentInfoRs = StudentInfoPageStmt.executeQuery("select * from StudentInfo where id >= "
+ id);
}catch(Exception ex){ex.printStackTrace();}
return StudentInfoRs;
}
//分页取得食堂菜单数据表的数据
public ResultSet getHallMenuRs(int id) {
try{
HallMenuRs = StudentInfoPageStmt.executeQuery("select * from HallMenu where id >= "
+ id);
}catch(Exception ex){ex.printStackTrace();}
return HallMenuRs;
}
//关闭数据库联接
public void closeConn(){
try{
conn.close();
}catch(Exception ex){ex.printStackTrace();}
}
}

(缩略图,点击图片链接看原图)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923