ホームページ >データベース >mysql チュートリアル >Java JDBC で「ResultSet が閉じられた後は操作が許可されません」という MySQL 例外を解決するにはどうすればよいですか?

Java JDBC で「ResultSet が閉じられた後は操作が許可されません」という MySQL 例外を解決するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-26 13:29:14920ブラウズ

How to Resolve the

MySQL 例外: Java JDBC の「ResultSet クローズ後の操作は許可されません」

データベースを操作する場合、データベースの状態を理解することが重要です。データオブジェクトを使用してエラーを防ぎます。 JDBC でよくある例外の 1 つは、「ResultSet が閉じられた後は操作が許可されません」エラーです。この問題の原因と解決策を調べてみましょう。

原因:

JDBC では、ResultSet はデータベース クエリの結果セットを表します。クエリを実行して ResultSet を取得したら、それを反復処理し、明示的に閉じてシステム リソースを解放する必要があります。閉じられた ResultSet に対して操作を実行しようとすると、「ResultSet が閉じられた後は操作は許可されません」という例外が発生します。

解決策:

このコードでは、寄付レコードを取得するクエリによって返された ResultSet を反復処理しているときに、MySQLDonation クラスでエラーが発生します。具体的には、この問題は、Select クエリの実行と後続の Delete クエリの実行の両方に同じ Statement オブジェクトが使用されるために発生します。

推奨アプローチ:

これを解決するにはこの問題を解決するには、同じステートメントを再利用するのではなく、クエリを実行するたびに新しい Statement オブジェクトを作成します。このアプローチを実装する手順は次のとおりです。

  1. ステートメント = connection.createStatement(); を削除します。 MySQLDatabase クラスの connect() メソッドの行。
  2. MySQLDatabase クラスのステートメントのすべてのインスタンスを connection.createStatement() に置き換えます。あるいは、プライベート ステートメント変数を完全に削除することもできます。

これらの手順に従うことで、ResultSet の各操作が新しく作成された Statement オブジェクトを使用して実行されるようになり、ResultSet が途中で閉じられるのを防ぐことができます。このアプローチにより、コードは寄付レコードを正しく処理し、「ResultSet が閉じられた後は操作は許可されません」例外を回避できるようになります。

以上がJava JDBC で「ResultSet が閉じられた後は操作が許可されません」という MySQL 例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。