Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich die Fehlermeldung „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig“, wenn ich meine MySQL-Verbindung in Java schließe?

Warum erhalte ich die Fehlermeldung „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig“, wenn ich meine MySQL-Verbindung in Java schließe?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 11:03:29744Durchsuche

Why am I getting

Problem beim Schließen der MySQL-Verbindung in Java

Problem:

Eine Ausnahme, „java.sql.SQLException: Operation nicht zulässig, nachdem ResultSet geschlossen wurde“, tritt beim Schließen einer Verbindung zu einer MySQL-Datenbank auf und weist auf ein Problem mit der ResultSet-Verarbeitung nach Verbindungsbeendigung hin.

Codeauszug:

<code class="java">public static ResultSet sqlquery(String query) {
    ResultSet rs = null;
    Connection connection = null;
    Statement st = null;
    try {
        // Establish connection and execute query
    } finally {
        // Attempt to close connection and ResultSet objects
    }
    return rs;
}</code>

Erklärung:

JDBC ruft nicht alle Abfrageergebnisse sofort im ResultSet ab. Stattdessen stellt es ein Objekt bereit, das das Abrufen von Ergebnissen erleichtert. Dieses Objekt wird jedoch beim Schließen der Verbindung ungültig.

Lösung:

Um dieses Problem zu vermeiden, sollte der Code ein Objekt erstellen, um die Abfrageergebnisse zu speichern, bevor die Verbindung geschlossen wird . Dazu gehört die Verwendung eines RowMappers, um ResultSet-Zeilen Objekten zuzuordnen und eine Sammlung zu füllen, die als Ergebnis der Methode zurückgegeben wird.

Aufgelöster Code:

<code class="java">public static <T> List<T> sqlquery(String query, RowMapper<T> rowMapper) {
    Connection connection = null;
    Statement st = null;
    ResultSet rs = null;
    try {
        // Establish connection and execute query
    } finally {
        // Handle possible exceptions gracefully
    }
    while (rs.next()) {
        list.add(rowMapper.mapRow(rs));
    }
    return list;
}</code>

Zusätzliche Hinweise:

  • Die Verwendung eines RowMapper macht den Code wiederverwendbar und vielseitiger für die Verarbeitung verschiedener Datentypen.
  • Erwägen Sie die Parametrisierung von Abfragen, um SQL-Injection-Angriffe zu verhindern.
  • Spring-jdbc bietet eine robuste Lösung für die mühelose Abwicklung von JDBC-Vorgängen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig“, wenn ich meine MySQL-Verbindung in Java schließe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn