由于库的使用,我遇到了一些模块接口问题。
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;对象脱离数据库模块。但正如您所见,该库不打算以这种方式使用。 我如何解决这个问题才能正确关闭所有结果集? 感谢
答案 0 :(得分:1)
我建议您考虑使用CachedRowSet
代替ResultSet
。实际上,您甚至不需要更改方法签名,只需更改方法以在finally块中返回RowSetProvider.newFactory().createCachedRowSet(rs);
并关闭rs
和pst
。
我不同意@ ElliottFrisch的建议。这只是将GUI与数据库代码混合在一起。