「SQLException: ResultSet クローズ後の操作は許可されていません」 - トラブルシューティングと解決策
「java.sql.SQLException: 操作は許可されていません」の発生「ResultSet が閉じられた後」例外は、通常、Java コードでの ResultSet の処理に問題があることを示します。この問題を解決するには、質問に示されているシナリオを詳しく調べてみましょう。
提供されたコード スニペットには、try-catch ブロック内で複数のクエリを実行することが含まれています。まず、Statement オブジェクトを使用して「user」テーブルからデータを取得し、続いて「profiles」テーブルをクエリして、PreparedStatement オブジェクトを使用してバッチ操作を準備します。
問題は getStuff() メソッド内で発生します。 、ここで ResultSet は閉じられずに取得され、Statement のデフォルトの動作に違反します。同じ Statement オブジェクトから複数の ResultSet を同時に開くことにより、このコードは、一度に 1 つの ResultSet のみを開くことができるという期待に違反しています。
この問題を修正するには、ResultSet が閉じられるときに ResultSet が明示的に閉じられるようにすることが重要です。はもう必要ありません。問題のコードの場合、これは、ResultSet オブジェクト (rs と rs2) と getStuff() メソッドの両方でデータを取得した後に、rs.close() への呼び出しを追加することを意味します。
さらに、データベース接続は再利用できるように設計されているため、最適なパフォーマンスを維持するには、クエリごとに新しい Statement オブジェクトを作成することが一般的に推奨されます。これは、すべてのクエリが同じステートメントを使用して実行されることを保証するため、バッチ操作を扱う場合に特に重要です。
これらの推奨事項に従うことで、「ResultSet が閉じられた後は操作は許可されません」例外を正常に解決し、 Java コードでの ResultSet の適切な処理。
以上がJava コードで「SQLException: Operation Not allowed After ResultSet Closed」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。