这是什么错误?Result set type is TYPE_FORWARD_ONLY

JB9 2004-03-24 01:13:13
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*,java.sql.*" %>
<jsp:useBean id="bean" class="Hx_Bean.SetConn_Hx"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言簿</title>
</head>
<body>
<%
int pageNumber=0;
ResultSet rs=null;
int recordCount=0;
try{
pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
}
catch(Exception e){
System.out.println(e.getMessage());
}
String sql="select * from Hx_Message order by id Desc";//把数据库的所有记录读出并显示在首页上
rs = bean.ex_query(sql);
while(rs.next()){
recordCount++;
}
if(pageNumber==0){
rs.beforeFirst();//Moves the cursor to the front of this ResultSet object, just before the first row.
}
else{
rs.absolute(pageNumber*5);
}
int tmp_Record=0;//记录每页显示的记录条数
out.println("<h2 align=center>欢迎使用留言薄</h2>");
out.println("<table border=0>");
while(rs.next()&&tmp_Record<5){
tmp_Record++;
out.println("<tr>");
out.println("<td>标题:"+rs.getString(2)+"</td>");
out.println("<td align=right>发表日期:"+rs.getString(3)+"</td>");
out.println("</tr>");
String content=rs.getString(5);
//将留言内容中的回车符转换成html语言中的<br>字符
String content2="";//?
while(content.indexOf('\n')!=-1){
int a=content.indexOf('\n');//
String s1=content.substring(0,a);
content2=content2.concat(s1);
content2=content2.concat("<br>");
int b=a+1;
content=content.substring(b);
}
content2=content2.concat(content);
content=content2;
out.println("<tr><td colspan=2 width=700>"+content+"</td><tr>");
out.println("<tr><td> </td>");
out.println("<td align=right>发言人:"+rs.getString(4)+"</td></tr>");
out.println("<tr> </td>");
}
out.println("</table>");
out.println("<p align=right>");//设置跳转页面链接
out.println("<a href='ShowMessage.jsp?pageNumber=0'>首页</a>");
if(pageNumber!=0){
out.println("<a href='ShowMessage.jsppageNumber="+(pageNumber-1)+"'>上一页</a>");
}
if((pageNumber+1)*5<rs.getRow()){
out.println("<a href='ShowMessage.jsppageNumber="+(pageNumber+1)+"'>下一页</a>");
}

int endCount=0;
if(recordCount%5==0){
endCount=recordCount/5;
}
else{
endCount=recordCount/5+1;
out.println("<a href='ShowMessage.jsppageNumber="+endCount+"'>尾页</a>");
out.println("</p>");
}
bean.closeStmt();//断开数据库连接
bean.closeConn();
%>
<p align="center"><a href="Addmessage.htm">发表留言</a></p>
</body>
</html>
这是javaBean:
package Hx_Bean;
import java.sql.*;
public class SetConn_Hx{
String Driver_String="sun.jdbc.odbc.JdbcOdbcDriver";
String Conn_String="jdbc:odbc:Hx";
private Connection conn=null;
private Statement stmt=null;
ResultSet MyRs=null;
//注册数据库驱动程序
public SetConn_Hx(){
try{
Driver d = (Driver)Class.forName(Driver_String).newInstance();
}
//捕捉注册异常
catch(Exception e){
System.err.println("数剧源:"+e.getMessage());
}
}
//建立数据库连结,定义数据的查询,更改
public ResultSet ex_query(String sql){
MyRs=null;
try{
conn=DriverManager.getConnection(Conn_String);//创建数据库连结对象
stmt=conn.createStatement();
MyRs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("查询信息:"+ex.getMessage());
}
return MyRs;
}
//定义数据库操作
public void ex_update(String sql){
stmt=null;
MyRs=null;
try{
conn=DriverManager.getConnection(Conn_String);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex1){
System.err.println("更新信息:"+ex1.getMessage());
}
}

//关闭数据库连结
public void closeStmt(){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}

}
public void closeConn(){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
// Java Document
最后会给出错误:Result set type is TYPE_FORWARD_ONLY
为什么会出现这种错误呢?
...全文
408 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fortune2k1 2004-03-24
  • 打赏
  • 举报
回复
rs.beforeFirst();//Moves the cursor to the front of this ResultSet object,
Error.
if you want a such use,please do as the follows:

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE) ;
Leemaasn 2004-03-24
  • 打赏
  • 举报
回复
改改看是不是那个原因。。。
黑马 2004-03-24
  • 打赏
  • 举报
回复
默认情况下,ResultSet的指针只能向前走,不能后退,也就是说如果有5个数据,你现在取第三个的话,你就不能在回去取第一或第二个数据了。

解决办法是:在statement创建时,写成stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

错误发生在:
rs.beforeFirst();//Moves the cursor to the front of this ResultSet object, just before the first row.
nkwj 2004-03-24
  • 打赏
  • 举报
回复
stmt=conn.createStatement();
改成下面这句
stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
xunyiren 2004-03-24
  • 打赏
  • 举报
回复
Result set type is TYPE_FORWARD_ONLY是说你的结果记录集只向前滚动,你改成这样就可以了
stmt=conn.createStatement();改成
stmt=conn.createStatement(ResultSet.TYPE_SCROLL
_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

81,092

社区成员

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

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