Menterjemah Senarai
Disertai dalam pertanyaan, pernyataan "IN" menentukan bahawa lajur tertentu mesti mempunyai nilai yang sepadan dalam senarai nilai yang disediakan. Apabila bekerja dengan pernyataan SQL IN menggunakan objek SqlCommand, kekeliruan mungkin timbul mengenai penukaran Senarai
Dalam coretan kod yang disediakan:
cmd.CommandText = "Select dscr from system_settings where setting in @settings"; cmd.Connection = conn; cmd.Parameters.Add(new SqlParameter("@settings", settingsList)); reader = cmd.ExecuteReader();
Senarai tetapan parameter mewakili Senarai
Untuk melaksanakan pertanyaan IN dengan selamat dengan SqlCommands, pertimbangkan untuk menggunakan pendekatan berikut:
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
Dalam pernyataan ini, {0} berfungsi sebagai pemegang tempat untuk senarai parameter dinamik yang dijana dalam langkah seterusnya.
string[] paramArray = settingList.Select((x, i) => "@settings" + i).ToArray();
Di sini, paramArray tatasusunan rentetan diperoleh dengan melelaran melalui settingsList dan memberikan setiap nilai kepada parameter yang dinamakan bagi borang "@settings0", "@settings1", dll.
cmd.CommandText = string.Format(sql, string.Join(",", paramArray));
Kaedah Format menggabungkan pernyataan templat dengan senarai parameter, menghasilkan SQL berparameter pernyataan.
for (int i = 0; i < settingList.Count; ++i) { cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i])); }
Parameter individu ditambah pada objek SqlCommand menggunakan gelung yang berulang melalui settingsList untuk memastikan bahawa setiap nilai mempunyai parameter yang sepadan.
Dengan mengikuti langkah-langkah ini, anda boleh melaksanakan IN dengan berkesan pertanyaan dengan objek SqlCommand menggunakan Senarai
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Senarai dengan Selamat sebagai SqlParameter untuk Penyata SQL IN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!