Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggunakan Senarai dengan Selamat sebagai SqlParameter untuk Penyata SQL IN?

Bagaimana untuk Menggunakan Senarai dengan Selamat sebagai SqlParameter untuk Penyata SQL IN?

Patricia Arquette
Lepaskan: 2024-12-28 07:05:23
asal
887 orang telah melayarinya

How to Safely Use a List as a SqlParameter for an SQL IN Statement?

Menterjemah Senarai ke dalam SqlParameter untuk Penyata SQL IN

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 ke dalam SqlParameter yang serasi.

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();
Salin selepas log masuk

Senarai tetapan parameter mewakili Senarai mengandungi nilai yang akan dinilai dalam pernyataan IN. Walau bagaimanapun, pemetaan langsung Senarai kepada SqlParameter mendorong pengecualian kerana ketidakserasian dengan jenis pembekal yang diketahui.

Untuk melaksanakan pertanyaan IN dengan selamat dengan SqlCommands, pertimbangkan untuk menggunakan pendekatan berikut:

  1. Bina Pernyataan dengan Pemegang tempat:
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
Salin selepas log masuk

Dalam pernyataan ini, {0} berfungsi sebagai pemegang tempat untuk senarai parameter dinamik yang dijana dalam langkah seterusnya.

  1. Sediakan Tatasusunan Parameter:
string[] paramArray = settingList.Select((x, i) => "@settings" + i).ToArray();
Salin selepas log masuk

Di sini, paramArray tatasusunan rentetan diperoleh dengan melelaran melalui settingsList dan memberikan setiap nilai kepada parameter yang dinamakan bagi borang "@settings0", "@settings1", dll.

  1. Gabungkan Pernyataan dengan Parameter:
cmd.CommandText = string.Format(sql, string.Join(",", paramArray));
Salin selepas log masuk

Kaedah Format menggabungkan pernyataan templat dengan senarai parameter, menghasilkan SQL berparameter pernyataan.

  1. Tambah Parameter:
for (int i = 0; i < settingList.Count; ++i)
{
    cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i]));
}
Salin selepas log masuk

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 sebagai input sambil mengekalkan keselamatan data dan mencegah kemungkinan serangan suntikan.

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!

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