一个老问题,jsp + sql 的分页。(三根鸡毛加急!!)

ad_lee 2006-05-08 09:42:00
老是提示 java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
我在连接的conn中也已经加了 ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE
这两个参数,还望高手指点。

<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.sql.*,student.conn"%>
<%@ page import="java.lang.Math.*" %>

<link rel="stylesheet" href="../css/style.css" type="text/css" />
<%!
ResultSet rs = null;
ResultSet rsTmp = null;
String sql = "";
int PageSize = 3;
int Page = 1;
int totalPage =1;
String str = "";
conn conn = new conn();

public String ShowOnePage(ResultSet rs, int Page, int PageSize) {
str = "";
// 先将记录指针定位到相应的位置
try {
rs.absolute( (Page-1) * PageSize + 1);
}catch(SQLException e) {
System.out.println(e);
}
for(int iPage=1; iPage<=PageSize; iPage++) {
str += RsToGbook(rs);
try {
if(!rs.next()) break;
}catch(Exception e)
{
}
}
return str;
}

// 显示单行记录子模块
public String RsToGbook( ResultSet rs ) {
String tt = "";
try {
tt += "<TR>";
tt += "<TD>" + rs.getString("Sname") + "</TD>";
tt += "<TD>" + rs.getString("Ssex") + "</TD>";
tt += "<TD>" + rs.getString("Sphone") + "</TD>";
tt += "<TD>" + rs.getString("Rdate") + "</TD>";
tt += "<TD>" + rs.getString("Saddr") + "</TD>";
tt += "</TR>";
}catch(SQLException e) {}
return tt;
}
%>
<%
sql = "select * from RegInfor";
try {
rs = conn.executeQuery( sql );
}catch(Exception e) {
out.println("访问数据库出错!");
}
%>
<html>
<head>
<title>分页浏览数据库的技巧</title>
</head>
<body bgcolor="#FFFFFF">
<h2 ALIGN="CENTER">JSP中的分页控制, Version 3</h2>
<hr>
<center>
<table border>
<TR bgcolor=lightblue>
<TH>name</TH>
<TH>sex</TH>
<TH>phone</TH>
<TH>regDaie</TH>
<TH>address</TH>
</TR>
<%
rsTmp = conn.executeQuery("select count(*) as mycount from RegInfor");
rsTmp.next();
int totalrecord = rsTmp.getInt("mycount");
if(totalrecord % PageSize ==0) totalPage = totalrecord / PageSize; // 如果是当前页码的整数倍
else totalPage = (int) Math.floor( totalrecord / PageSize ) + 1; // 如果最后还空余一页
if(totalPage == 0) totalPage = 1;
rsTmp.close();
try {
if(request.getParameter("Page")==null || request.getParameter("Page").equals(""))
Page = 1;
else
Page = Integer.parseInt(request.getParameter("Page"));
} catch(java.lang.NumberFormatException e) { // 捕获用户从浏览器地址拦直接输入Page=sdfsdfsdf所造成的异常
Page = 1;
}
if(Page < 1) Page = 1;
if(Page > totalPage) Page = totalPage;
out.println(ShowOnePage(rs, Page, PageSize));
%>
</table>
<form Action="page2.jsp" Method="GET">
<%
if(Page != 1) {
out.println("<A HREF=page2.jsp?Page=1>第一页</A>");
out.println("<A HREF=page2.jsp?Page=" + (Page-1) + ">上一页</A>");
}
if(Page != totalPage) {
out.println("<A HREF=page2.jsp?Page=" + (Page+1) + ">下一页</A>");
out.println("<A HREF=page2.jsp?Page=" + totalPage + ">最后一页</A>");
}
rs.close();
%>
<p>输入页数:<input TYPE="TEXT" Name="Page" SIZE="3"> 页数:<font COLOR="Red"><%=Page%>/<%=totalPage%></font>
</p>
</form>
</center>
<hr>
</body>
</html>
...全文
317 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenvinp 2006-05-09
  • 打赏
  • 举报
回复
参考一下,,这里有mysql的分页例子:
http://www.ideagrace.com/
baiyang3721 2006-05-09
  • 打赏
  • 举报
回复

有可能是JDBC的版本低了。
使用rowset包吧,和resultset的使用方法一样的。
ad_lee 2006-05-09
  • 打赏
  • 举报
回复
谢谢以上兄弟的帮助!已解决
heliang69 2006-05-08
  • 打赏
  • 举报
回复
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
就是你的rs只能向前滚动,所谓一去不回头了

在你创建Statement的时候,写成以下的形式就可以了

Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
jshi123 2006-05-08
  • 打赏
  • 举报
回复
把你那段建立连接的代码贴出来看啊。
datalover 2006-05-08
  • 打赏
  • 举报
回复
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE

应该是我写的这样吧

你要把TYPE_SCROLL改为不敏感
ad_lee 2006-05-08
  • 打赏
  • 举报
回复
我的好象还是不行

81,092

社区成员

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

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