Rumah >pembangunan bahagian belakang >C++ >Mengapakah C# `ExecuteNonQuery` saya membuang ralat 'Harta sambungan tidak dimulakan'?

Mengapakah C# `ExecuteNonQuery` saya membuang ralat 'Harta sambungan tidak dimulakan'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-04 05:47:39477semak imbas

Why is my C# `ExecuteNonQuery` throwing a

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn