Amalan Terbaik JDBC: Susunan Tertutup Set Keputusan, Pernyataan dan Sambungan
Adalah penting untuk mematuhi pengurusan sumber JDBC yang betul untuk prestasi pangkalan data yang optimum . Semasa menutup sambungan selepas penggunaan biasanya disyorkan, soalan biasa timbul mengenai keperluan menutup ResultSets dan Penyata secara berasingan.
Soalan:
Memandangkan coretan kod di bawah, adakah perlu menutup ResultSet dan Statement secara eksplisit sebelum menutup Sambungan?
Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = // Retrieve connection stmt = conn.prepareStatement(// Some SQL); rs = stmt.executeQuery(); } catch(Exception e) { // Error Handling } finally { try { if (rs != null) rs.close(); } catch (Exception e) {}; try { if (stmt != null) stmt.close(); } catch (Exception e) {}; try { if (conn != null) conn.close(); } catch (Exception e) {}; }
Jawapan:
Contoh kod yang anda berikan menunjukkan amalan yang sempurna. Walaupun menutup sambungan adalah penting, ia tidak mencukupi untuk memastikan pengeluaran semua sumber.
Menutup Sambungan tidak menutup ResultSets atau Statements secara automatik. Jika mekanisme pengumpulan pangkalan data primitif digunakan dan connection.close() dipanggil, sambungan akan dikembalikan ke kumpulan, meninggalkan ResultSets dan Statements yang tidak ditutup. Ini boleh membawa kepada kebocoran sumber dan potensi isu.
Oleh itu, adalah penting untuk menutup ResultSets, Penyata dan Sambungan mengikut susunan yang ditunjukkan dalam coretan kod anda. Ini memastikan pengeluaran semua sumber JDBC yang betul dan mengelakkan kebocoran memori.
Atas ialah kandungan terperinci Adakah Saya Perlu Menutup ResultSets dan Penyata Sebelum Menutup Sambungan dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!