ホームページ >データベース >mysql チュートリアル >Java JDBC コードで「ResultSet が閉じられた後は操作が許可されません」がスローされるのはなぜですか?

Java JDBC コードで「ResultSet が閉じられた後は操作が許可されません」がスローされるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-23 13:41:13428ブラウズ

Why Does My Java JDBC Code Throw

例外: 「ResultSet が閉じられた後は操作は許可されません」

次のコードが原因で Java JDBC MySQL 例外が発生しました:

Statement statement;

public void connect() {
    statement = connection.createStatement();
}

の説明エラー:

ステートメント インスタンスはすべてのデータベース操作間で共有されます。 SELECT クエリを実行すると、ResultSet オブジェクトが返されます。 ResultSet が (明示的または暗黙的に) 閉じられると、ステートメントに対するそれ以上の操作は、「ResultSet が閉じられた後は操作が許可されません」という例外を除いて失敗します。

解決策:

この問題を解決するには、データベース操作ごとに新しい Statement オブジェクトを作成します。 as:

public ResultSet query(String query) throws SQLException {
    if (query.toLowerCase().startsWith("select")) {
        return connection.createStatement().executeQuery(query);
    } else {
        connection.createStatement().executeUpdate(query);
    }
    return null;
}

これにより、クエリごとに新しい Statement が使用されるようになり、ResultSet を閉じる問題が後続の操作に影響を与えることがなくなります。

以上がJava JDBC コードで「ResultSet が閉じられた後は操作が許可されません」がスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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