使用数据库时,通常需要在应用程序中检索数据并对其进行操作。实现此目的的一种方法是使用 ResultSet,它提供对数据库结果的访问。但是,直接返回 ResultSet 可能存在某些限制。
在提供的代码中:
public ResultSet select() { ... return rs; }
该方法尝试返回 ResultSet 引用。但是,这种方法可能会导致资源泄漏问题,因为它使语句和连接保持打开状态,从而阻止它们过早释放。
要克服这些限制,需要更好的方法是将 ResultSet 映射到 JavaBean 集合,然后可以将其作为列表返回。此方法可确保数据库资源正确关闭并防止资源泄漏。
这里是实现此方法的修改后的代码:
public List<Biler> list() throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; List<Biler> bilers = new ArrayList<>(); try { connection = database.getConnection(); statement = connection.prepareStatement("SELECT id, name, value FROM Biler"); resultSet = statement.executeQuery(); while (resultSet.next()) { Biler biler = new Biler(); biler.setId(resultSet.getLong("id")); biler.setName(resultSet.getString("name")); biler.setValue(resultSet.getInt("value")); bilers.add(biler); } } finally { if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {} if (statement != null) try { statement.close(); } catch (SQLException ignore) {} if (connection != null) try { connection.close(); } catch (SQLException ignore) {} } return bilers; }
此修改后的方法返回 Biler 对象的列表,其中然后可以由应用程序进行操作,而无需担心与直接返回 ResultSet 相关的资源泄漏问题。
除了上述方法之外,修改后的代码还包括一些改进:
通过采用这些实践,您的数据库交互将更加健壮、可维护和高性能。
以上是为什么直接从数据库查询返回结果集是一个坏主意?的详细内容。更多信息请关注PHP中文网其他相关文章!