Rumah > pangkalan data > tutorial mysql > Mengapa saya mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' apabila menutup Sambungan MySQL saya di Java?

Mengapa saya mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' apabila menutup Sambungan MySQL saya di Java?

Mary-Kate Olsen
Lepaskan: 2024-10-31 11:03:29
asal
930 orang telah melayarinya

Why am I getting

Isu dengan Menutup Sambungan MySQL dalam Java

Masalah:

Pengecualian, "java.sql.SQLException: Operation tidak dibenarkan selepas ResultSet ditutup," timbul apabila menutup sambungan ke pangkalan data MySQL, menunjukkan masalah dengan pengendalian ResultSet selepas penamatan sambungan.

Petikan Kod:

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

Penjelasan:

JDBC tidak mengambil semua hasil pertanyaan ke ResultSet serta-merta. Sebaliknya, ia menyediakan objek yang memudahkan perolehan semula hasil. Walau bagaimanapun, objek ini menjadi tidak sah apabila sambungan ditutup.

Penyelesaian:

Untuk mengelakkan isu ini, kod harus mencipta objek untuk menyimpan hasil pertanyaan sebelum menutup sambungan . Ini melibatkan penggunaan RowMapper untuk memetakan baris ResultSet ke objek dan mengisi koleksi yang dikembalikan sebagai hasil kaedah.

Kod Selesai:

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

Nota Tambahan:

  • Menggunakan RowMapper menjadikan kod lebih boleh digunakan semula dan serba boleh untuk mengendalikan pelbagai jenis data.
  • Pertimbangkan untuk membuat parameter pertanyaan untuk mengelakkan serangan suntikan SQL.
  • Spring-jdbc menyediakan penyelesaian yang mantap untuk mengendalikan operasi JDBC dengan mudah.

Atas ialah kandungan terperinci Mengapa saya mendapat \'java.sql.SQLException: Operasi tidak dibenarkan selepas ResultSet ditutup\' apabila menutup Sambungan MySQL saya di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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