Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?

Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-01 08:24:11708semak imbas

How to Fix

Konflik Nama Pembolehubah dalam Kelompok Pertanyaan SQL

Apabila melaksanakan pertanyaan SQL, adalah penting untuk memastikan keunikan dalam nama pembolehubah dalam satu kelompok atau prosedur tersimpan . Ralat "Nama pembolehubah '@' telah pun diisytiharkan" menunjukkan bahawa berbilang pembolehubah dengan nama yang sama telah ditakrifkan.

Untuk menyelesaikannya, fokus pada blok kod yang disediakan:

private void btn_lock2_Click(object sender, EventArgs e)
{
    // ...
    for (long counter = from; counter <= to; counter++)
    {
        string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'";
        rwd.command.CommandText = upd;
        rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)).Value = 1;
        rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)).Value = txt_desc2.Text;
        // ...
    }
}

Kesilapan terletak pada penambahan berulang kali parameter dalam gelung. Sebaliknya, alihkan penciptaan parameter di luar gelung:

// Moved outside the loop
rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar));
rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar));

for (long counter = from; counter <= to; counter++)
{
    // ...
    rwd.command.Parameters["@LockState"].Value = 1;
    rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;
    // ...
}

Sebagai alternatif, pertimbangkan untuk mengosongkan parameter dalam gelung:

for (long counter = from; counter <= to; counter++)
{
    rwd.command.Parameters.Clear();
    // ...
}

Dengan mengikuti pengesyoran ini, anda boleh menghapuskan ralat dan memastikan keunikan nama pembolehubah dalam pertanyaan SQL anda.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?. 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