【发布时间】:2014-10-19 01:42:57
【问题描述】:
我在关闭与 MySQL 的连接时遇到问题。
我收到了错误:
java.sql.SQLException: ResultSet 关闭后不允许操作
我的代码:
public static ResultSet sqlquery (String query)
{
ResultSet rs=null;
Connection connection=null;
Statement st=null;
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("databaseadress","username","password");
st = connection.createStatement();
rs = st.executeQuery(query);
}catch(SQLException e){System.out.println("SQL error: " + e);}
catch(Exception e){System.out.println("Error: " + e);}
finally {
try{
if(rs != null) rs.close();
if(st!= null) st.close();
if(connection != null) connection.close();
}catch(SQLException e){System.out.println("SQL error : " + e);}
}
return rs;
}
【问题讨论】:
-
我不是数据库专家,但在我看来,在完成 ResultSet 之前,您不想关闭连接。那么当您更改代码以反映这一点时会发生什么?为什么不在方法中从 ResultSet 中提取数据,并返回您希望使用数据创建的任何对象的 ArrayList,然后从方法中返回此列表?
-
您关闭了 ResultSet,所以所有内容都被删除了。为什么要使用它?在关闭之前提取数据并返回数据
-
异常发生在哪一行代码?你确定这是你在这里展示的吗?
-
看来他正在返回
ResultSet对象,并且稍后在此处未显示的代码中获取异常。 -
@JimGarrison 是的,我知道。我希望通过检查堆栈跟踪,他能弄明白。