Rumah >pembangunan bahagian belakang >C++ >Mengapakah C# `ExecuteNonQuery` saya membuang ralat 'Harta sambungan tidak dimulakan'?
ExecuteNonQuery: Connection Property Not Initialized
Isu yang dihadapi dalam kod C# yang disediakan ialah sifat Sambungan SqlCommand bernama InsertCommand tidak telah ditetapkan, membawa kepada ralat "ExecuteNonQuery: Connection property has not been dimulakan."
Untuk menyelesaikan ralat ini, anda mesti memberikan sifat Sambungan secara eksplisit kepada InsertCommand. Ini boleh dicapai menggunakan sama ada sifat Sambungan atau pembina SqlCommand.
// Option 1: Using the Connection property cmd.InsertCommand.Connection = connection1; // Option 2: Using the constructor cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);
Selain itu, disyorkan untuk menggunakan pernyataan penggunaan untuk objek IDisposable seperti SqlConnection dan SqlCommand. Ini memastikan bahawa sumber dilupuskan dengan betul selepas digunakan.
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) ")) { insertCommand.Connection = connection1; cmd.InsertCommand = insertCommand; connection1.Open(); foreach (EventLogEntry entry in alog.Entries) { // Assign parameter values // ... // Execute the insert command cmd.InsertCommand.ExecuteNonQuery(); } }
Dengan membuat pelarasan ini, sifat sambungan InsertCommand akan ditetapkan dengan betul dan kod harus dilaksanakan tanpa menghadapi ralat.
Atas ialah kandungan terperinci Mengapakah C# `ExecuteNonQuery` saya membuang ralat 'Harta sambungan tidak dimulakan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!