[英]When to close Connection, Statement, PreparedStatement and ResultSet in JDBC
[英]When to close Statement when using jdbc
我正在使用odbc連接Java中的mysql數據庫
我編寫了一個函數“ ExecuteQuery”,它將字符串參數作為sql語句並返回其結果集。 但是,什么時候應該關閉語句對象? 如果我在函數ExecuteQuery中將其關閉,則返回的結果集也將被關閉。 如果我不關閉它,則會發生內存泄漏,因為我在調用方中沒有語句對象的引用。 謝謝
您采用錯誤的方法。 如果您確實需要這樣的功能(令人懷疑),請使其接受一個Statement
作為參數,並創建一個單獨的函數來創建和設置該語句。 然后,您可以將函數和ResultSet
工作包裝在try..finally
塊中,並finally
關閉語句。
例如
Statement statement = getStatement();
try {
ResultSet rs = executeQuery(statement, query);
...
} finally {
statement.close();
}
但是,如果遇到此類問題,則可能需要重新考慮您的體系結構。 以Hibernate為例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.