我从我的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"
答案 0 :(得分:4)
当您在代码中关闭Connection
时,也会关闭从该连接创建的ResultSet
之类的任何依赖对象。只要您需要结果集,就需要保持连接处于打开状态,使用CachedRowSet
或在返回结果集之前将结果集的内容传递给其他内容。