大家好,我这有一段jsp分页显示代码(已贴出),但是不行(具体说明见内容),请大家帮我看看吧,谢谢!

yky890 2005-11-09 01:57:27
问题描述:我在sqlserver2000中,建立了一个表,只是想把这个表分页显示出来:代码如下:

<%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*,java.util.*;" errorPage=""%>
<html>
<head>
<title>学籍管理系统</title>
</head>
<%! String url,sql; %>
<%! Connection conn;//定义数据库连接对象 %>
<%! ResultSet rs,rscount;//定义结果集对象,及结果集的记录行数 %>
<%! Statement stmt;//定义SQL语句对象 %>
<%! int i;%>
<%! int pageSize=10;//定义每页显示的记录行数%>
<%! int rowCount=0;//定义总的记录行数%>
<%! int pageCurrent;//当前的页数%>
<%! int pageCount;//总的页数%>

<body bgcolor="#ffffff">
<div align="center"><font color="#000000" size="5">学籍管理系统 </font> </div>
<table width="75%" border="1" cellspacing="1" cellpadding="1" align="center">
<tr>
<td width=16% align=center>学号</td>
<td width=16% align=center>姓名</td>
<td width=8% align=center>性别</td>
<td width=8% align=center>年龄</td>
<td width=16% align=center>籍贯</td>
<td width=12% align=center>院系</td>
<td width=12% align=center>更改</td>
<td width=12% align=center>删除</td>
</tr>
<%
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=university";
conn=DriverManager.getConnection(url,"admin","123456");//建立与数据库的连接
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
sql="select * from student";
rs=stmt.executeQuery(sql);//查询数据库
String sqlcount="select count(*) from student";
rscount=stmt.executeQuery(sqlcount);
rowCount=rscount.getInt(0);//获取student表中总的记录行数
String strPage=request.getParameter("page");//获取参数page
if(strPage==null){//如果page为null则表示为第一页,设置pageCurrent的值为1
pageCurrent=1;
}
else{//如果pageCurrent的值小于1,同样设置pageCurrent的值为1
pageCurrent=Integer.parseInt(strPage);
if(pageCurrent<1)
pageCurrent=1;
}
for(i=1;i<(pageCurrent-1)*pageSize;i++)
rs.next();
for(i=1;i<pageSize;i++){//将数据集中的数据指针指向第pageCurrent页的数据,该页显示的数据记录数为pageSize
if(rs.next()){
%>
<tr>
<td width=16% align=center><%=rs.getObject(1)%></td>
<td width=16% align=center><%=rs.getObject(2)%></td>
<td width=8% align=center><%=rs.getObject(3)%></td>
<td width=8% align=center><%=rs.getObject(4)%></td>
<td width=16% align=center><%=rs.getObject(5)%></td>
<td width=12% align=center><%=rs.getObject(6)%></td>
<td width=12% align=center><a href="change.jsp?xuehao=<%=rs.getObject(1)%>">修改</a></td>
<td width=12% align=center><a href="del.jsp?xuehao=<%=rs.getObject(1)%>">删除</a></td>
</tr>
<%
}
}
rs.close();
stmt.close();
conn.close();
pageCount=(int)(rowCount/pageSize);//计算总的页数,如果总页数>1则显示1,2,...,n(n表示总的页数)
if(pageCount*pageSize<rowCount)
pageCount++;
if(pageCount>1){
for(i=1;i<pageCount;i++)
out.print(\"<a href=list.jsp?page=\"+i+\">\"+i+\" </a>\");
}
}catch(Exception e){
out.println(e);
}
%>
</table>
<div align="center"><a href="insert.jsp">添加新记录 </a> </div>
</body>
</html>

1、源代码是上面描述的,我在代码中把38、39、40行 改为:rs.last();
intRowCount = rowCount.getRow();
以后还是检索不出数据。

2、代码最后的out.print(\"<a href=list.jsp?page=\"+i+\">\"+i+\" </a>\"); 也有问题。
上面两点我自己修改过,但是还是不出数据,所以我把源代码贴上来,大家帮我看看 谢谢!

...全文
355 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yky890 2005-11-09
  • 打赏
  • 举报
回复
呵呵 虽然我没采用chatboycsdn(江湖小虾米)说的那种方法,但是他说的问题所在处是对的,我把那两句代码改为

rs.last(); //此时已经指向最后,没有数据了
rowCount = rs.getRow();
rs=stmt.executeQuery(sql);//再次返回数据,解决没有数据的问题。

还有最后一句已改为:out.print("<a href=list.jsp?page="+i+">"+i+"</a>");

大家说得关于重用性及struts的方面 我会尽力学习,谢谢大家!!祝大家学习工作愉快!
yky890 2005-11-09
  • 打赏
  • 举报
回复
谢谢大家 显示是可以显示了 一共13条纪录 现在第一页显示10条
但是最后那句怎么写 才能把第二页的3条显示出来 那个连接打开的是原窗口么?
谢谢
yky890 2005-11-09
  • 打赏
  • 举报
回复
多谢大家的指导
我刚学jsp 目前是想让上面的这个程序能够显示数据。谢谢
chatboycsdn 2005-11-09
  • 打赏
  • 举报
回复
做项目的话建议最好使用struts,这样结构清晰,就算非要直接在jsp上写代码也最好将代码封装一下,象数据库连接就可以写个ConnectionFactory来生成,也可以做个conn.jsp然后在使用的页面中include,不然以后改起来的话累死自己
jxdn_yang 2005-11-09
  • 打赏
  • 举报
回复
楼上说的对,在STRUTS 中分页简单点
chatboycsdn 2005-11-09
  • 打赏
  • 举报
回复
rscount=stmt.executeQuery(sqlcount);
rowCount=rscount.getInt(0);//获取student表中总的记录行数

上面两行是有问题的,应该在中间加一句rscount.next();
jxdn_yang 2005-11-09
  • 打赏
  • 举报
回复
呵呵,看的眼前花了
炎龙的李 2005-11-09
  • 打赏
  • 举报
回复
<td width=16% align=center><%=rs.getObject(2)%></td>
这样写似乎也有不妥(我没这样写过),直接用rs.getString(2)、rs.getInt(2)是不是更好一点,如果数据类型明确的话。
不过还是应该使用strust,数据库操作应该放在后台逻辑中执行,前台jsp只用简单接受和显示数据
ljhyp_cn 2005-11-09
  • 打赏
  • 举报
回复
首先对楼主说:
你这样的代码非常烂(小孩子写代码)自己多看看架构,逻辑,多层处理方式.
对你贴出的代码
for(i=1;i<(pageCurrent-1)*pageSize;i++)
rs.next();
for(i=1;i<pageSize;i++){//将数据集中的数据指针指向第pageCurrent页的数据,该页显示的数据记录数为pageSize
if(rs.next()){
for(i=1;i<(pageCurrent-1)*pageSize;i++)这个是有问题的因为pageCurrent默认为1(如果为null)则就是for(i=1;i<0*pageSize;i++)
所有根本就不会循环.
就不会有任何数据了.

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧