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
Lepaskan: 2024-12-15 09:29:09
asal
843 orang telah melayarinya

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_@ = ?;";
Salin selepas log masuk

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

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!

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