Rumah  >  Artikel  >  pangkalan data  >  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
Mary-Kate Olsenasal
2024-10-31 11:03:29744semak imbas

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>

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>

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:
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