Heim > Datenbank > MySQL-Tutorial > Wie kann ich Datenbankergebnissätze in Java sicher zurückgeben und Ressourcenlecks vermeiden?

Wie kann ich Datenbankergebnissätze in Java sicher zurückgeben und Ressourcenlecks vermeiden?

Barbara Streisand
Freigeben: 2024-11-29 02:24:09
Original
421 Leute haben es durchsucht

How Can I Safely Return Database Result Sets in Java and Avoid Resource Leaks?

Sichere Rückgabe von Ergebnissätzen

Die Rückgabe eines Ergebnissatzes aus einer Datenbankabfrage kann aufgrund des Risikos von Ressourcenlecks eine komplexe Aufgabe sein. Hier gehen wir diese Herausforderung an, indem wir einen alternativen Ansatz zur effizienten Rückgabe der Daten untersuchen.

Problem:

Beim Versuch, eine Ergebnismenge direkt zurückzugeben, löst der Code eine aus java.sql.SQLException, da die Ergebnismenge nach der Ausführung der Methode geschlossen wird.

Lösung: Zuordnung zu JavaBeans

Anstatt die Ergebnismenge selbst zurückzugeben, ordnen Sie die Daten einer Sammlung von JavaBeans zu. Mit diesem Ansatz können Sie die Verbindung und die Anweisung offen halten, während Sie die Ergebnismenge durchlaufen. Hier ist ein Beispiel:

public List<Biler> list() throws SQLException {
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    List<Biler> bilers = new ArrayList<>();

    try {
        connection = database.getConnection();
        statement = connection.prepareStatement("SELECT id, name, value FROM Biler");
        resultSet = statement.executeQuery();

        while (resultSet.next()) {
            Biler biler = new Biler();
            biler.setId(resultSet.getLong("id"));
            biler.setName(resultSet.getString("name"));
            biler.setValue(resultSet.getInt("value"));
            bilers.add(biler);
        }
    } finally {
        if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {}
        if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
        if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
    }

    return bilers;
}
Nach dem Login kopieren

Try-with-Resources-Anweisung

Wenn Sie Java 7 oder höher verwenden, können Sie die Try-with-Resources-Anweisung verwenden Erklärung zur automatischen Ressourcenschließung:

public List<Biler> list() throws SQLException {
    List<Biler> bilers = new ArrayList<>();

    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement("SELECT id, name, value FROM Biler");
        ResultSet resultSet = statement.executeQuery();
    ) {
        while (resultSet.next()) {
            Biler biler = new Biler();
            biler.setId(resultSet.getLong("id"));
            biler.setName(resultSet.getString("name"));
            biler.setValue(resultSet.getInt("value"));
            bilers.add(biler);
        }
    }

    return bilers;
}
Nach dem Login kopieren

Zusätzlich Überlegungen

Es ist wichtig, die Deklaration von Verbindung, Anweisung und Ergebnismenge als Instanzvariablen zu vermeiden (Threadsicherheitsproblem). Darüber hinaus ist es wichtig, SQLExceptions angemessen zu behandeln und Ressourcen in der richtigen Reihenfolge zu schließen. Wenn Sie diese Richtlinien befolgen, können Sie Ergebnismengen effektiv zurückgeben und gleichzeitig die Ressourcenverwaltung beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann ich Datenbankergebnissätze in Java sicher zurückgeben und Ressourcenlecks vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage