ホームページ > データベース > mysql チュートリアル > Java コードで「SQLException: Operation Not allowed After ResultSet Closed」が発生するのはなぜですか?

Java コードで「SQLException: Operation Not allowed After ResultSet Closed」が発生するのはなぜですか?

Patricia Arquette
リリース: 2024-12-04 07:59:11
オリジナル
359 人が閲覧しました

Why Am I Getting

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート