我正在尝试编写一个小代码段,我需要从数据库中获取一些数据,然后在其他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;
}
}
答案 0 :(得分:1)
通常, 不要手动编写JDBC数据库访问代码。 现在已经存在可以执行所有低层JDBC处理的库,并且 他们正确地做到了。 您永远不会比成熟的人做得更好, 开源项目已经做到了。
相反, 学习和使用类似MyBatis之类的东西。 如果您使用Spring, 这是Mybatis-Spring project的链接。
MyBatis隐藏了所有数据转换和JDBC垃圾。 相反,您可以在一个简单的XML文件中定义查询并接收一个列表 查询的结果。
答案 1 :(得分:0)
只需添加到@DwB的答案中即可。
您可以1)将查询中的所有行检索到Java列表中; 2)然后关闭连接; 3)然后在另一个类中使用Java列表(以进行进一步处理)。
如果仅检索结果集的一部分后关闭连接,则将丢失其余部分,并会收到您提到的错误。不要这样子。