両方ともクローズした方が良いです。
ファイルシステムや、DBMSなどに対する参照を持つオブジェクトは、メモリーから解放されても、参照先のハンドルは自動的に解放されません。
DBMSにもよりますが、Statementを取得した際には、DBサーバー側で「カーソル」がオープン状態になります。
Statementをクローズし忘れてしまうと、カーソルがオープンされずに、DBサーバー上のオープンカーソル数が最大値に達してそれ以上オープンできなくなる、というする問題が良く発生します。
ResultSetはcloseしなくても大丈夫だったケースもありますが、安全側に倒した方が良いと思います。
追記: Connectionをクローズすればカーソルが解放される場合は不要と考えられるかもしれませんが、もし他の人が見るようなコードなら、意図的にクローズしていないことを明記した上でクローズしない処理を使うとかすれば良いかもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/08/28 01:17