关闭ResultSet和PreparedStatements的快速修复程序

时间:2013-12-02 06:10:19

标签: java resultset

由于库的使用,我遇到了一些模块接口问题。

http://technojeeves.com/joomla/index.php/free/59-resultset-to-tablemodel

我不得不将Resultset对象从数据库模块中传出。您可能认为,编程不是模块化的。所以我做了类似的事情

public ResultSet getEmployee()
{
   PreparedStatement pst = null;
   ResultSet rs = null;
   String sql = "select * from employees";
   try
   {
      pst = conn.PreparedStatement(sql);
      rs = pst.executeQuery();
   }
   catch (SQLException e)
   {
    OptionPane.showMessageDialog(null, "Database Access Error");
   }
   return rs;
}

在某些显示模块上,我做了

tblEmp.setModel(DbUtils.resultSetToTableModel(rs));

现在我正忙着完成我的交付项目 突然发现了这个帖子。

Where to close java PreparedStatements and ResultSets?

然后意识到我所做的一切都是错的。我不得不传出一套#34;对象脱离数据库模块。但正如您所见,该库不打算以这种方式使用。 我如何解决这个问题才能正确关闭所有结果集? 感谢

1 个答案:

答案 0 :(得分:1)

我建议您考虑使用CachedRowSet代替ResultSet。实际上,您甚至不需要更改方法签名,只需更改方法以在finally块中返回RowSetProvider.newFactory().createCachedRowSet(rs);并关闭rspst

我不同意@ ElliottFrisch的建议。这只是将GUI与数据库代码混合在一起。