Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memperbaiki IndexOutOfBoundsException Apabila Menggunakan Pertanyaan Parameter dalam MySQL dengan C#?
Menyelesaikan Masalah Ralat Pertanyaan Parameter dalam MySQL dengan C#
Apabila menggunakan pertanyaan berparameter dalam MySQL dengan C#, adalah penting untuk mengelakkan perangkap biasa yang boleh menyebabkan kepada kesilapan. Salah satu isu yang kerap timbul ialah IndexOutOfBoundsException yang ditemui apabila menambah parameter pertama.
Masalah:
Pertimbangkan coretan kod ringkas berikut:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;"; public bool read(string id) { MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.Add(new MySqlParameter("", val1)); m.Parameters.Add(new MySqlParameter("", val2)); }
Apabila melaksanakan kod ini, ralat berlaku apabila cuba menambah kod parameter pertama (indeks 0).
Penyelesaian:
Untuk menyelesaikan isu ini, sintaks yang betul untuk mentakrifkan pertanyaan berparameter ialah menggunakan parameter bernama dan bukannya tanda soal ( ?). Parameter yang dinamakan lebih teguh dan menghapuskan kekeliruan yang disebabkan oleh indeks pemegang tempat bernombor:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;"; public bool read(string id) { MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2); }
Selain itu, disyorkan untuk memudahkan kod dengan menggunakan kaedah ExecuteScalar untuk mengambil satu nilai daripada pertanyaan. Ini menghapuskan keperluan untuk lelaran melalui pembaca data dan menukar hasilnya terus kepada jenis data yang diingini (dalam kes ini, integer):
public bool read(string id) { 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 amalan terbaik ini, anda boleh mengelakkan IndexOutOfBoundsException dan memastikan pelaksanaan pertanyaan berparameter yang boleh dipercayai dalam pangkalan data MySQL anda menggunakan C#.
Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki IndexOutOfBoundsException Apabila Menggunakan Pertanyaan Parameter dalam MySQL dengan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!