ExecuteNonQuery: Harta Sambungan Belum Dimulakan
Ralat "ExecuteNonQuery: Sifat sambungan belum dimulakan" menunjukkan sambungan yang hilang antara SqlCommand dan pangkalan data. Untuk menyelesaikan isu ini, ikut langkah berikut:
1. Berikan Sambungan kepada SqlCommand
Dalam kod yang disediakan, sambungan diwujudkan dalam sambungan talian1.Open(); tidak diberikan kepada InsertCommand yang digunakan dalam kaedah ExecuteNonQuery. Untuk membetulkannya, gunakan sama ada pembina atau harta untuk menetapkan sambungan kepada InsertCommand:
cmd.InsertCommand = new SqlCommand("..."); cmd.InsertCommand.Connection = connection1;
2. Gunakan Penyata Menggunakan untuk Pelupusan Sumber
Adalah disyorkan untuk menggunakan pernyataan menggunakan untuk melupuskan objek IDisposable secara automatik seperti SqlConnection, yang turut menutup sambungan apabila blok pernyataan keluar:
using (var connection1 = new SqlConnection(...)) { using (var cmd = new SqlDataAdapter()) { using (var insertCommand = new SqlCommand(...)) { // ... connection1.Open(); } } }
3. Optimumkan Pengendalian Sambungan
Mencipta sambungan baharu untuk setiap entri dalam gelung foreach adalah tidak perlu. Anda boleh mengoptimumkan ini dengan mencipta sambungan dan penyesuai di luar gelung dan menggunakannya semula:
var connection1 = new SqlConnection(...); var cmd = new SqlDataAdapter(); var insertCommand = new SqlCommand(...); insertCommand.Connection = connection1; ... connection1.Open(); // ... // No need to close the connection explicitly
Atas ialah kandungan terperinci Mengapa My ExecuteNonQuery Throw 'Harta Sambungan Belum Dimulakan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!