在Mysql连接关闭时出现错误“ResultSet关闭后不允许操作”

时间:2014-01-17 09:48:22

标签: java mysql sql jdbc

我从我的appiclation的其他部分打电话给这个班级,它工作正常。但是我想关闭每个已打开的mysql连接。

这是我的类连接到我的数据库:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;





public class BACENGQueryDatabases {
    public String Query;


    public BACENGQueryDatabases(String Query){
        this.Query = Query;
    }

    public ResultSet LoadQuery() throws Exception{  

    // Accessing Driver From Jar File
    Class.forName("com.mysql.jdbc.Driver");

//Get credentials from Property file
BACENGPropertiesFile user = new BACENGPropertiesFile("user.cred");
BACENGPropertiesFile passwd = new BACENGPropertiesFile("passwd.cred");
BACENGPropertiesFile database = new BACENGPropertiesFile("database.system");
BACENGPropertiesFile DBServer = new BACENGPropertiesFile("DBServer.system");
BACENGPropertiesFile DBPort = new BACENGPropertiesFile("DBPort.system");

Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;


//DB Connection

          con = DriverManager.getConnection("jdbc:mysql://"+DBServer.properties()+":"+DBPort.properties()+"/"+database.properties()+"",""+user.properties()+"",""+passwd.properties()+"");       
    //DB Connection
           String sql =Query; 
           pst = con.prepareStatement(sql);
    //System.out.println(sql); //Just to test

          rs=pst.executeQuery();

     con.close();
    return rs;


    }

}

当我尝试关闭连接时,问题就出现了:

con.close();

然后,输出是:

"Operation not allowed after ResultSet closed"

1 个答案:

答案 0 :(得分:4)

当您在代码中关闭Connection时,也会关闭从该连接创建的ResultSet之类的任何依赖对象。只要您需要结果集,就需要保持连接处于打开状态,使用CachedRowSet或在返回结果集之前将结果集的内容传递给其他内容。