由于使用了库,我遇到了一些模块接口问题。
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));
现在,我正忙于完成我的项目,以便交付和突然发现了这个帖子。
在哪里关闭java PreparedStatements和ResultSet?
然后意识到我所做的一切都是错误的。我不得不从数据库模块中传递一个"set"对象。但正如你所看到的,图书馆并不是这样使用的。如何修复此问题以正确关闭所有结果集?感谢
我建议您考虑使用CachedRowSet
而不是ResultSet
。事实上,您甚至不需要更改方法签名,只需更改方法以返回RowSetProvider.newFactory().createCachedRowSet(rs);
并关闭finally块中的rs
和pst
即可。
我不同意@ElliottRisch的建议。这只是混淆了GUI和数据库代码。