Java JDBC MySQL で「ResultSet が閉じられた後は操作が許可されません」を回避するにはどうすればよいですか?
Java JDBC MySQL 接続での ResultSet のクローズの処理
Java JDBC を使用して MySQL データベースを操作する場合、ResultSet のクローズを適切に管理することが重要です。 「ResultSet を閉じた後は操作は許可されません。」というエラーを回避するには。このエラーは、閉じた ResultSet に対して操作を実行しようとすると発生し、予期しない動作や誤ったクエリ結果が発生します。
問題の理解
提供されたコードでは、例外は、MySQLDonation クラスの while (results.next()) ループ内でトリガーされます。実際の原因は、同じ Statement オブジェクト (ステートメント) が SELECT クエリ (寄付を取得するため) と後続の DELETE クエリ (処理された寄付レコードを削除するため) の両方に使用されていることです。
解決策:クエリごとに新しい Statement を作成する
この問題を解決するには、クエリを実行するたびに新しい Statement オブジェクトを作成する必要があります。これにより、前の ResultSet が後続のクエリ実行によって自動的に閉じられなくなります。 MySQLDatabase クラスの変更点は次のとおりです。
public ResultSet query(String query) throws SQLException { Statement statement = connection.createStatement(); if (query.toLowerCase().startsWith("select")) { return statement.executeQuery(query); } else { statement.executeUpdate(query); } statement.close(); // Optional: May not be necessary as Resources are auto-closed return null; }
追加の考慮事項
Statement オブジェクトの管理に加えて、メモリの消費を防ぐために JDBC リソースを処理するためのベスト プラクティスに従うことが重要です。リークを防止し、適切なデータベース接続処理を保証します。以下に追加のヒントをいくつか示します。
- 自動リソース管理には try-with-resources ブロックを使用します。
- Statement、ResultSet、および ResultSet を初期化して閉じます。 try-catch ブロック内の接続オブジェクト。
- ハンドル例外を適切に処理し、例外が存在する場合でもリソースを解放します。
結論
クエリごとに新しいステートメントを作成し、リソース管理を遵守することによってベスト プラクティスを実行すると、「ResultSet が閉じられた後は操作は許可されません」エラーを回避し、MySQL クエリを正しく実行できるようになります。効率と信頼性を高めるために、データベースの対話を継続的に最適化することを忘れないでください。
以上がJava JDBC MySQL で「ResultSet が閉じられた後は操作が許可されません」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
