我在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/