ステートメントステートメント; 接続接続;
以下のように、データベース操作ごとに接続を閉じています。
connection.close();
以下のようにステートメントオブジェクトを作成しました。
connection.createStatement(....)
接続を閉じるのと同様にステートメントを閉じる必要がありますか?
つまり、statement.close(); を呼び出す必要がありますか?
呼び出されないとどうなりますか?
ありがとう!
Javadocはそれをすべて言います:
Statement.close()
この Statement オブジェクトのデータベースと JDBC リソースを、自動的に閉じられるまで待つのではなく、ただちに解放します。データベース リソースを拘束しないように、リソースの使用が終了したらすぐにリソースを解放することをお勧めします。
close()
が常に呼び出されるようにする良い方法の 1 つは、finally
ブロック内に配置することです。
Statement stmt = connection.createStatement();
try {
// use `stmt'
} finally {
stmt.close();
}
Java 7 では、上記をより簡潔に次のように記述できます。
try (Statement stmt = connection.createStatement()) {
// ...
}
これはtry
-with-resources ステートメント と呼ばれます。
一般に、接続を閉じると、ドライバーの実装者が正しく作業を行っていれば、関連するすべてのリソースも閉じられます。とは言っても、リソースを使い終わったら、リソースを閉じる方が良いでしょう。これにより、あなたの側とデータベースの両方でリソースが解放されます。