Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengembalikan Set Hasil Pangkalan Data dengan Selamat di Java dan Mengelakkan Kebocoran Sumber?

Bagaimanakah Saya Boleh Mengembalikan Set Hasil Pangkalan Data dengan Selamat di Java dan Mengelakkan Kebocoran Sumber?

Barbara Streisand
Lepaskan: 2024-11-29 02:24:09
asal
442 orang telah melayarinya

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

Mengembalikan ResultSets Dengan Selamat

Mengembalikan set hasil daripada pertanyaan pangkalan data boleh menjadi tugas yang rumit kerana risiko kebocoran sumber. Di sini, kami menangani cabaran ini dengan meneroka pendekatan alternatif untuk memulangkan data dengan cekap.

Isu:

Apabila cuba mengembalikan set hasil secara langsung, kod itu melemparkan java.sql.SQLException kerana set keputusan ditutup selepas kaedah itu pelaksanaan.

Penyelesaian: Pemetaan ke JavaBeans

Daripada mengembalikan set hasil itu sendiri, petakan data kepada koleksi JavaBeans. Pendekatan ini membolehkan anda memastikan sambungan dan penyataan terbuka semasa melelaran melalui set hasil. Berikut ialah contoh:

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;
}
Salin selepas log masuk

Pernyataan Cuba-dengan-Sumber

Jika anda menggunakan Java 7 atau lebih baru, anda boleh menggunakan cuba-dengan-sumber penyata untuk penutupan sumber automatik:

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;
}
Salin selepas log masuk

Tambahan Pertimbangan

Adalah penting untuk mengelakkan pengisytiharan sambungan, pernyataan dan set hasil sebagai pembolehubah contoh (isu keselamatan benang). Selain itu, adalah penting untuk mengendalikan SQLExceptions dengan sewajarnya dan menutup sumber dalam urutan yang betul. Dengan mengikut garis panduan ini, anda boleh mengembalikan set hasil dengan berkesan sambil mengekalkan pengurusan sumber.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Set Hasil Pangkalan Data dengan Selamat di Java dan Mengelakkan Kebocoran Sumber?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan