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

Bagaimana untuk Menyelesaikan IndexOutOfBoundsException dalam Pertanyaan Parameter MySQL dengan C#?

DDD
DDDasal
2024-12-22 02:25:14827semak imbas

How to Resolve IndexOutOfBoundsException in MySQL Parameterized Queries with C#?

Pertanyaan Berparameter dalam MySQL dengan C#: Menangani IndexOutOfBoundsException

Apabila bekerja dengan pertanyaan berparameter dalam MySQL menggunakan C#, adalah penting untuk memastikan bahawa nama dan nilai parameter adalah betul untuk elakkan pengecualian. Dalam kes ini, IndexOutOfBoundsException ditemui semasa menambah parameter pertama.

Untuk menyelesaikan isu ini, sahkan bahawa nama parameter dalam rentetan pertanyaan dan parameter yang ditambahkan pada objek MySqlCommand sepadan. Selain itu, pertimbangkan perkara berikut:

Nama Parameter Tidak Padan

Dalam kod yang disediakan:

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

Anda telah tersilap menggunakan ? ruang letak dalam rentetan pertanyaan, yang tidak disokong oleh MySQL. Sebaliknya, MySQL menjangkakan parameter bernama, yang sepatutnya bermula dengan @.

Perubahan Kod

Ganti rentetan pertanyaan dengan yang berikut:

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

Selain itu, gunakan kaedah AddWithValue untuk menambah parameter pada objek arahan:

m.Parameters.AddWithValue("@param_val_1", val1);
m.Parameters.AddWithValue("@param_val_2", val2);

Ini memastikan bahawa nama parameter sepadan dengan pemegang tempat dalam rentetan pertanyaan.

Nilai Pulangan

Dalam kod yang diubah suai, nilai tahap diambil menggunakan ExecuteScalar dan bukannya ExecuteReader. Ini kerana pertanyaan mengembalikan nilai tunggal (tahap), jadi menggunakan ExecuteScalar adalah lebih cekap.

Dengan membuat perubahan ini, anda seharusnya dapat melaksanakan pertanyaan berparameter tanpa menghadapi sebarang pengecualian.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan IndexOutOfBoundsException dalam Pertanyaan Parameter MySQL dengan 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