Rumah >pembangunan bahagian belakang >C++ >Mengapa ExecuteNonQuery Gagal dengan 'Sambungan Tidak Dimulakan'?
Tidak Boleh ExecuteNonQuery: Sambungan Tidak Dimulakan
Isu berulang timbul apabila cuba melaksanakan pertanyaan menggunakan ExecuteNonQuery:
ExecuteNonQuery: Connection property has not been initialized.
Penjelasan
Ralat ini berlaku apabila sifat Sambungan objek SqlCommand tidak diberikan. Sifat Sambungan mewujudkan sambungan antara SqlCommand dan pangkalan data. Tanpa sambungan yang ditetapkan, ExecuteNonQuery tidak boleh dilaksanakan.
Penyelesaian
Untuk menyelesaikan isu ini, tetapkan sambungan pangkalan data kepada sifat Sambungan objek SqlCommand:
cmd.InsertCommand.Connection = connection1;
Selain itu, adalah dinasihatkan untuk menggunakan pernyataan penggunaan untuk sumber pakai buang seperti SqlConnection. Amalan ini memastikan pelupusan sumber yang betul dan mengendalikan penutupan sambungan:
using (var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True")) { using (var cmd = new SqlDataAdapter()) { using (var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ")) { // Assign connection insertCommand.Connection = connection1; // Set other properties... connection1.Open(); // Execute query... } } }
Pengoptimuman
Untuk mengoptimumkan lagi prestasi, elakkan membuat berbilang sambungan dan penyesuai data untuk setiap lelaran dalam gelung. Wujudkan sambungan dan penyesuai data sekali di luar gelung dan gunakan semula dalam gelung. Ini mengurangkan overhed membuat dan menutup sambungan beberapa kali.
Atas ialah kandungan terperinci Mengapa ExecuteNonQuery Gagal dengan 'Sambungan Tidak Dimulakan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!