关闭连接后使用结果集数据

时间:2019-07-15 18:28:15

标签: java sql jdbc

我正在尝试编写一个小代码段,我需要从数据库中获取一些数据,然后在其他Java文件中处理结果。我尝试编写一个程序,该程序的执行失败,并显示错误“由于连接已关闭,无法访问结果集”。

有什么办法可以将从数据库中获取的结果存储在某个地方(例如somearraylist),并在关闭连接后将其用于计算?如果是,有人可以举例说明吗? 由于我是新手,因此略有残障。

Class A { 

  public Map<String, Object> loadDat(int acc,Map<String,Object> result) 
      throws Exception { 
    Class.forName("com.teradata.jdbc.TeraDriver"); 
    Connection conn = DriverManager.getConnection(connectionString, user, password); 
    query = "select * from mytable where id="+acc; 
    PreparedStatement stmt = conn.prepareStatement(query); 
    ResultSet rs=stmt.executeQuery(); 
    result.put(" Result", rs) ; 
    return result; 
  }

}

2 个答案:

答案 0 :(得分:1)

通常, 不要手动编写JDBC数据库访问代码。 现在已经存在可以执行所有低层JDBC处理的库,并且 他们正确地做到了。 您永远不会比成熟的人做得更好, 开源项目已经做到了。

相反, 学习和使用类似MyBatis之类的东西。 如果您使用Spring, 这是Mybatis-Spring project的链接。

MyBatis隐藏了所有数据转换和JDBC垃圾。 相反,您可以在一个简单的XML文件中定义查询并接收一个列表 查询的结果。

答案 1 :(得分:0)

只需添加到@DwB的答案中即可。

您可以1)将查询中的所有行检索到Java列表中; 2)然后关闭连接; 3)然后在另一个类中使用Java列表(以进行进一步处理)。

如果仅检索结果集的一部分后关闭连接,则将丢失其余部分,并会收到您提到的错误。不要这样子。