java - 使用jdbc时何时关闭Statement

标签 java jdbc memory-leaks

我在Java中使用odbc连接mysql数据库

我编写了一个函数“ExecuteQuery”,它接受一个字符串参数作为sql语句并返回其结果集。但是,什么时候应该关闭语句对象呢? 如果我在函数 ExecuteQuery 中关闭它,返回的结果集也将被关闭。 如果我不关闭它,就会发生内存泄漏,因为我在调用者中没有语句对象的引用。谢谢您

最佳答案

你采取了错误的方法。如果您确实需要这样的函数(这是值得怀疑的),请使其接受 Statement 作为参数,并创建一个单独的函数来创建和设置该语句。然后,您可以将函数和 ResultSet 工作包装在 try..finally block 中,并在 finally 中关闭语句。

例如

Statement statement = getStatement();
try {
    ResultSet rs = executeQuery(statement, query);
    ...
} finally {
    statement.close();
}

但是,如果您面临此类问题,您可能需要重新考虑您的架构。看看Hibernate ,例如。

关于java - 使用jdbc时何时关闭Statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452357/

相关文章:

java - JDBC MySQL URL 和特殊字符的问题

objective-c - 泄漏是如何发生的?

java.sql.SQLException :field id does not have a default value

java - Google Guava : How to use ImmutableSortedMap. 自然顺序?

java - 在 Java SQL 中自动关闭结果集

java - 为什么我的代码使用监听器将值设置为错误的 View

java - 如何将复选框选项保存到数据库中?

f# - 递归序列会泄漏内存吗?

java - Android 内存泄漏新线程()

java - 基于 ANTLR4 的词法分析器在 NetBeans 上键入期间丢失语法突出显示