Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan IndexOutOfBoundsException Apabila Menggunakan Pertanyaan Parameter dengan MySQL dalam C#?

Bagaimana untuk Mengelakkan IndexOutOfBoundsException Apabila Menggunakan Pertanyaan Parameter dengan MySQL dalam C#?

Susan Sarandon
Susan Sarandonasal
2024-12-15 09:29:09844semak imbas

How to Avoid IndexOutOfBoundsException When Using Parameterized Queries with MySQL in C#?

Pertanyaan Berparameter untuk MySQL dengan C#

Apabila bekerja dengan pertanyaan SQL, pertanyaan berparameter amat disyorkan. Mereka melindungi daripada serangan suntikan SQL dan meningkatkan prestasi dengan menghapuskan keperluan untuk menggabungkan nilai rentetan.

Walau bagaimanapun, apabila menggunakan pertanyaan berparameter dengan MySQL daripada C#, adalah penting untuk memastikan kod anda dikonfigurasikan dengan betul. Satu kemungkinan ralat yang boleh berlaku ialah IndexOutOfBoundsException apabila menambah parameter pertama.

Isu:

Dalam kod yang diberikan:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";

Masalahnya terletak pada rentetan pertanyaan, yang menggunakan tanda soal (?) sebagai pemegang tempat untuk parameter. MySQL tidak mengiktiraf tanda soal sebagai ruang letak parameter; ia menjangkakan parameter bernama diawali dengan '@'.

Penyelesaian:

Untuk menyelesaikan isu ini, anda perlu mengubah suai rentetan pertanyaan untuk menggunakan parameter bernama dan menambah parameter kepada objek MySqlCommand menggunakan AddWithValue() kaedah:

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;
}

Dengan menggunakan parameter bernama dan kaedah AddWithValue(), pertanyaan akan berjaya dilaksanakan tanpa menemui IndexOutOfBoundsException.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan IndexOutOfBoundsException Apabila Menggunakan Pertanyaan Parameter dengan MySQL dalam C#?. 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