Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Parameter Pertanyaan dengan Keadaan LIKE dan IN dalam .NET?

Bagaimana untuk Parameter Pertanyaan dengan Keadaan LIKE dan IN dalam .NET?

Susan Sarandon
Lepaskan: 2024-12-27 06:43:13
asal
838 orang telah melayarinya

How to Parameterize Queries with LIKE and IN Conditions in .NET?

Pertanyaan Berparameter dengan Syarat SUKA dan DALAM

Apabila menggunakan pertanyaan berparameter dalam .NET, contoh biasanya menunjukkan penggunaannya dengan senario mudah, seperti membandingkan nilai lajur tunggal dengan parameter. Walau bagaimanapun, perkara boleh menjadi lebih rumit apabila berurusan dengan keadaan seperti IN dan LIKE yang melibatkan berbilang parameter atau aksara bukan standard.

Pertanyaan dengan Keadaan DALAM

Mari kita pertimbangkan pertanyaan yang mencari produk berdasarkan ID kategori, yang mana ID kategori boleh menjadi senarai yang dipisahkan koma integer.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
Salin selepas log masuk

Untuk membuat parameter pertanyaan ini menggunakan CategoryID tatasusunan integer, kita perlu menggelung melalui tatasusunan dan mencipta parameter untuk setiap ID kategori.

int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617 };

SqlCommand comm = conn.CreateCommand();
string[] parameters = new string[categoryIDs.Length];
for (int i = 0; i < categoryIDs.Length; i++)
{
   parameters[i] = "@p" + i;
   comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
}
comm.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
Salin selepas log masuk

Pertanyaan dengan Syarat LIKE

Sekarang mari tambah syarat LIKE yang mencari produk dengan nama yang mengandungi rentetan tertentu, mungkin dengan aksara khas.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@name%'
Salin selepas log masuk

Untuk meparameterkan pertanyaan ini, kami mencipta parameter untuk nilai Nama dan menggunakan penggabungan untuk mencari nama dalam pertanyaan.

string Name = "someone";

SqlCommand comm = conn.CreateCommand();

comm.Parameters.AddWithValue("@name", $"%{Name}%");
comm.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
comm.CommandText += " OR name LIKE @name";
Salin selepas log masuk

Dengan menggunakan pendekatan ini, kami boleh mencipta pertanyaan berparameter sepenuhnya yang mengendalikan kedua-dua keadaan IN dan LIKE dengan jenis parameter yang berbeza, memastikan keselamatan dan prestasi pangkalan data kami akses.

Atas ialah kandungan terperinci Bagaimana untuk Parameter Pertanyaan dengan Keadaan LIKE dan IN dalam .NET?. 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