Rumah > pangkalan data > tutorial mysql > Mengapa 'Operasi tidak dibenarkan selepas ResultSet ditutup' Berlaku Apabila Menggunakan Semula Sambungan Kenyataan di Java?

Mengapa 'Operasi tidak dibenarkan selepas ResultSet ditutup' Berlaku Apabila Menggunakan Semula Sambungan Kenyataan di Java?

DDD
Lepaskan: 2024-12-16 17:44:12
asal
655 orang telah melayarinya

Why Does

Menutup ResultSet Sebelum Menggunakan Semula Sambungan Pernyataan

Dalam pengaturcaraan pangkalan data Java, ia kadangkala menghadapi pengecualian yang timbul apabila menggunakan pernyataan yang disediakan selepas ditutup Set Keputusan. Pengecualian ini, "Operasi tidak dibenarkan selepas ResultSet ditutup," timbul secara khusus apabila objek sambungan yang sama digunakan.

Dalam coretan kod yang diberikan, pernyataan baharu yang disediakan dibuat menggunakan objek sambungan yang sama selepas menutup ResultSets sedia ada. (rs dan rs2). Ini menimbulkan pengecualian. Untuk menyelesaikan isu ini dan menggunakan semula sambungan penyata, amalan terbaik untuk memastikan bahawa semua ResultSets sebelumnya yang dikaitkan dengan Penyata ditutup.

Satu pendekatan yang disyorkan ialah menggunakan blok cuba-dengan-sumber, yang menutup ResultSets secara automatik dan Penyata. Berikut ialah contoh:

try (
    Statement statement = connection.createStatement();
    ResultSet rs = statement.executeQuery("SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;")
) {
    if (rs.next()) {
        // Process the results
    }

    try (
        ResultSet rs2 = statement.executeQuery("SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";")
    ) {
        String updateSql = "INSERT INTO `blah` ...";
        PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql);

        while (rs2.next()) {
            // ...
        }

        pst.executeBatch();
    }
} catch (SQLException e) {
    e.printStackTrace();
}
Salin selepas log masuk

Dalam contoh ini, kedua-dua rs dan rs2 ditutup dalam blok percubaan masing-masing sebelum cuba menggunakan Penyata untuk menyediakan kumpulan baharu. Ini memastikan bahawa tiada ResultSets terbuka sebelum melaksanakan pernyataan yang disediakan.

Ingat, mengekalkan objek ResultSet aktif adalah penting untuk interaksi pangkalan data yang betul. Sentiasa utamakan pengendalian dan pembersihan sumber yang betul untuk mengelakkan pengecualian dan memastikan integriti data.

Atas ialah kandungan terperinci Mengapa 'Operasi tidak dibenarkan selepas ResultSet ditutup' Berlaku Apabila Menggunakan Semula Sambungan Kenyataan di Java?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan