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

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

Mary-Kate Olsen
Lepaskan: 2025-01-03 21:49:39
asal
768 orang telah melayarinya

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);
Salin selepas log masuk

Sebagai alternatif, sifat sambungan boleh diberikan secara langsung:

cmd.InsertCommand.Connection = connection1;
Salin selepas log masuk

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();
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan