2017-01-09 6 views
1

私はWeb Crawler(uni assignment)をプログラムする必要があるため、MySQLデータベースとの間でたくさんのデータを保存/読み込み/更新する必要があります。Java/SQL:ResultSet/Statement/Connectionを閉じる()ことは必須ですか?

私は、JDBCコネクタを使用していますし、上のすべての時間が私はPreparedStatementの& ResultSetを定義することだし、最終的に私は最終的にはRSとPSを閉じデータベース に連絡する方法を呼び出します。

しかし、私は同じ方法を何度も使用するので、プログラムをより多く作成するのではなく、時間とリソースを効率的にしています。私はそれを遅く/重くしています。ですから、それらを閉じる他の理由があるのでしょうか、それとも私はそれらを開かせるべきですか?

もし私がそれらを閉じないと、プログラムは何の問題もないようですが、私はそれが正しいように見せたくありませんが、本当にそうです。

編集:閉じる方法のアイデアをお寄せいただきありがとうございます。問題は「方法は必須です」です。クローズするとプログラムが遅くなるので、クローズできないか(悪い習慣と思われる)、または少なくともが良い選択肢を見つけることが必要です

+0

私がテストします。.. http://stackoverflow.com/questions/2225221/closing-database-connections-in-java – RamPrakash

答えて

2
  • それは、常に実行が完了したら、それらをローカルにPreparedStatementResultSetを定義する(すなわち、方法で)とcloseするのがベストプラクティスです。

  • PreparedStatementプログラムとデータベースとの間のカーソルとして動作し、閉じていない場合に開くことのできるカーソル/記述子の数は、接続ごとに制限されているように、(Oracleの場合)maximum open cursors exceededエラーが発生する可能性があります。

  • は限りPreparedStatementを閉じ、ResultSetに関しては閉鎖として自動的に(hereがJavadocのある)ResultSetを閉じます。理想的には、実装にはtry with resourcesブロックを使用する必要があります。

+0

を、これは...それはあなたの質問にお答えしますreaadしてくださいしてみてください - と - ソースの代わりに、最後にtry-finally-tryを試してみてください。接続も閉じるかどうかそれが必要な場合は、しばらくしてから接続を再開することができます – user3219829

関連する問題