Dalam kod warisan, contoh SqlDataReader selalunya tidak ditutup dan tidak dilupuskan. Walaupun perkara ini menimbulkan kebimbangan, adalah penting untuk memahami implikasinya.
Pertimbangan Prestasi
Objek SqlDataReader yang tidak tertutup boleh berpotensi memberi kesan kepada prestasi melalui:
Untuk mengurangkan kesan ini, disyorkan untuk menutup dan melupuskan objek SqlDataReader secara manual.
Menggunakan Pernyataan: Amalan Terbaik
Pendekatan pilihan adalah untuk membungkus objek SqlDataReader dalam menggunakan pernyataan. Ini memastikan penutupan dan pelupusan automatik, membebaskan sumber dengan segera. Pertimbangkan contoh berikut:
using (SqlConnection connection = new SqlConnection("connection string")) { connection.Open(); using (SqlCommand cmd = new SqlCommand("SELECT * FROM SomeTable", connection)) { using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader != null) { while (reader.Read()) { //do something } } } // reader closed and disposed } // command disposed } // connection closed and disposed
Dengan menggunakan pernyataan, anda memastikan bahawa SqlDataReader, SqlCommand dan SqlConnection dilupuskan dengan betul, membebaskan sumber.
Penutupan dan Pelupusan Manual
Jika menggunakan pernyataan tidak boleh dilaksanakan, penutupan dan pelupusan manual masih boleh dilakukan. Walau bagaimanapun, adalah penting untuk bersungguh-sungguh dalam mengeluarkan sumber:
SqlDataReader reader = cmd.ExecuteReader(); try { if (reader != null) { while (reader.Read()) { //do something } } } finally { reader.Close(); reader.Dispose(); }
Ingat, terlupa untuk menutup dan melupuskan objek SqlDataReader boleh mengakibatkan kelembapan dan penggunaan sumber. Menggunakan penyata atau penutupan manual dan amalan pelupusan adalah penting untuk mengekalkan prestasi.
Atas ialah kandungan terperinci Perlukah Saya Menutup dan Membuang Objek SqlDataReader Secara Manual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!