Seorang pembangun mengalami ralat semasa menjalankan program .NET disebabkan oleh "ExecuteNonQuery: Connection property mesej belum dimulakan".
Sampel kod berikut menggambarkan isu:
using System.Data.SqlClient; namespace Test { class Program { static void Main() { SqlConnection connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"); SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "); connection.Open(); // Connection is not assigned to the command cmd.ExecuteNonQuery(); connection.Close(); } } }
Untuk menyelesaikan isu tersebut, sifat sambungan SqlCommand mesti diberikan. Ini boleh dilakukan semasa penciptaan perintah atau dengan menetapkan harta kemudian.
Menetapkan Semasa Membuat Perintah
SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection);
Menetapkan Harta Kemudian
cmd.Connection = connection;
Untuk objek yang melaksanakan IDisposable, seperti SqlConnection, pernyataan penggunaan adalah disyorkan. Ia menutup sambungan secara automatik dan mengendalikan sebarang pengecualian:
using (var connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True")) using (var cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ")) { cmd.Connection = connection; // Connection is automatically closed when leaving the using block }
Untuk mengoptimumkan prestasi, anda tidak perlu membuat sambungan baharu dan penyesuai data untuk setiap entri dalam gelung foreach . ADO.NET mengurus sambungan secara automatik dan menggunakan pengumpulan sambungan.
Atas ialah kandungan terperinci Mengapakah `ExecuteNonQuery` Melemparkan Ralat 'Harta Sambungan Tidak Dimulakan' dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!