Operation not allowed after ResultSet closed

幸福的小雨 2008-09-28 12:05:33
我有一个问题就是,我的RS与Stmt没有交错使用为什么会出现这个错误呢?小弟先在些谢过了
错误:Operation not allowed after ResultSet closed

在StrutsAction中调用Page p=new Page();p.SelectRS("select id,username from user", "where id<3", page_num, page);

我的原码:
//com.DateBase.ConnLink文件

package com.DateBase;

import java.sql.*;

public class ConnLink {
private Connection conn=null;
private Statement stmt=null;
// private ResultSet rs=null;

public Statement DBlink() throws SQLException
{
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");
stmt=conn.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBclean(null);
}
return stmt;
}

public void DBclean(ResultSet rs)
{
try {
if(rs!=null)
{
rs.close();
}
if(stmt!=null)
{
stmt.close();
}
if(conn!=null)
{
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


//com.SpreadPage.Page文件
package com.SpreadPage;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.DateBase.*;

public class Page extends ConnLink{
private Statement stmt=null;
private ResultSet rs=null;
private String select=null;
private String where=null;
private String SQL=null;

private int num=0;
private int page=0;
//搜索去向 搜索条件 当前第几页 每页条数
public ResultSet SelectRS(String select,String where,int page_num,int page)
{
// this.select=select;
// this.where=where;
this.num=page_num;
this.page=page;
String sql=select+"limit "+(page_num*page)+","+(page_num*page+page)+" "+where;
SQL=select+" "+where;
try {
stmt=DBlink();
System.out.println(sql);
rs=stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBclean(rs);
}
return rs;
}
//获得总记录数
public int getRow()
{
int row=0;
// String SQL="select count(*) from jj "+where;
try {
if(rs!=null)
{
rs.close();
}
if(stmt==null)
{
System.out.println("Stmt无连接");
return 0;
}
System.out.println(SQL);
rs=stmt.executeQuery(SQL);
rs.first();
rs.last();
row=rs.getRow();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return row;
}

public int getFrist()
{
return 0;
}
public int getBack()
{
return (getRow()/page)+1;
}
public int getLast()
{
if(num<=0)
{
return 0;
}
return (num-1);
}
public int getNext()
{
int back=getBack();
if(num>=back)
{
return num;
}
return (num+1);
}
}

...全文
964 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福的小雨 2008-09-28
  • 打赏
  • 举报
回复
谢谢你呀~~~~

可是又出现在了新的错误,我去看看
结贴了
jsjlw 2008-09-28
  • 打赏
  • 举报
回复
你好像不了解finally的用法.

rs=stmt.executeQuery(sql); 
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBclean(rs);
}
耶律火柴 2008-09-28
  • 打赏
  • 举报
回复

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");
stmt=conn.createStatement();

加上这个 DBclean(null);
使用之后要关闭


幸福的小雨 2008-09-28
  • 打赏
  • 举报
回复
但是去了那个也是一样的
jsjlw 2008-09-28
  • 打赏
  • 举报
回复
貌似连接了finally里立马又关闭了.

81,092

社区成员

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

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