Rumah >pembangunan bahagian belakang >C++ >Mengapa `ExecuteNonQuery()` Gagal dengan Ralat 'Uninitialized Connection Property'?

Mengapa `ExecuteNonQuery()` Gagal dengan Ralat 'Uninitialized Connection Property'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 21:49:39750semak imbas

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery: Kegagalan Kerana Sifat Sambungan Tidak Dimulakan

Soalan:

Apabila cuba melaksanakan arahan SQL menggunakan(ExecuteNonQuery ), ralat ditemui menunjukkan bahawa sifat sambungan belum dimulakan. Apakah yang boleh menyebabkan isu ini?

Jawapan:

Mesej ralat, "ExecuteNonQuery: Sifat sambungan belum dimulakan," menunjukkan bahawa objek SqlConnection belum diperuntukkan dengan betul kepada objek SqlCommand. Untuk menyelesaikan isu ini, sifat sambungan SqlCommand mesti ditetapkan secara eksplisit.

Penyelesaian:

Satu kaedah untuk menetapkan sambungan adalah melalui pembina kelas SqlCommand :

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);

Sebagai alternatif, sifat sambungan boleh diberikan secara langsung:

cmd.InsertCommand.Connection = connection1;

Pertimbangan Tambahan:

  • Menggunakan Pernyataan: Adalah disyorkan untuk menggunakan pernyataan menggunakan untuk objek yang melaksanakan IDisposable , seperti SqlConnection, untuk memastikan pembersihan dan sambungan sumber yang betul penutupan.
  • Penggabungan Sambungan: Mencipta dan menutup sambungan berulang kali (cth., untuk setiap entri dalam gelung foreach) ialah overhed yang tidak perlu. Sebaliknya, pertimbangkan untuk membuat dan membuka sambungan sekali di luar gelung dan menutupnya hanya selepas gelung selesai.

Kod Contoh:

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;

    // Other code...

    connection1.Open();
    insertCommand.ExecuteNonQuery();
}

Atas ialah kandungan terperinci Mengapa `ExecuteNonQuery()` Gagal dengan Ralat 'Uninitialized Connection Property'?. 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