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);
}
}