Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan Parameter MySQL Saya dalam C# Membuang IndexOutOfBoundsException?

Mengapa Pertanyaan Parameter MySQL Saya dalam C# Membuang IndexOutOfBoundsException?

Barbara Streisand
Barbara Streisandasal
2024-12-25 17:06:17926semak imbas

Why Does My MySQL Parameterized Query in C# Throw an IndexOutOfBoundsException?

Pertanyaan Berparameter untuk MySQL dengan C#

Soalan ini menangani isu biasa yang dihadapi apabila menggunakan pertanyaan berparameter dengan MySQL dalam C#. Kod yang disediakan termasuk bahagian berkaitan kod yang menimbulkan isu.

Soalan:

Coretan kod termasuk pertanyaan berparameter dengan dua tanda soal (?) sebagai ruang letak untuk nilai parameter. Walau bagaimanapun, pengguna mengalami IndexOutOfBoundsException apabila menambah parameter pertama. Apa yang salah dengan kod itu?

Jawapan:

Kod yang disediakan memulakan objek MySqlCommand dengan pertanyaan berparameter, tetapi tanda soal pemegang tempat tidak diawali dengan "@ " aksara, yang diperlukan untuk parameter bernama dalam MySQL. Kod yang diperbetulkan adalah seperti berikut:

private String readCommand = 
             "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.AddWithValue("@param_val_1", val1);
    m.Parameters.AddWithValue("@param_val_2", val2);
    level = Convert.ToInt32(m.ExecuteScalar());
    return true;
}

Dalam kod yang diperbetulkan ini:

  • Rentetan readCommand diubah suai untuk menggunakan parameter bernama dengan sintaks "@param_name".
  • Kaedah AddWithValue digunakan untuk menambah parameter pada arahan, memastikan nama parameter sepadan dengan yang dinyatakan dalam pertanyaan.
  • Kaedah ExecuteScalar digunakan untuk melaksanakan pertanyaan dan mendapatkan nilai skalar tunggal (tahap dalam kes ini).

Atas ialah kandungan terperinci Mengapa Pertanyaan Parameter MySQL Saya dalam C# Membuang IndexOutOfBoundsException?. 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