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

Bagaimana untuk Parameter LIKE dan IN Keadaan dalam .NET SQL Queries?

Susan Sarandon
Lepaskan: 2024-12-31 09:53:09
asal
156 orang telah melayarinya

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

Pertanyaan Berparameter dengan Syarat SUKA dan DALAM

Dalam dunia pengaturcaraan .NET, pertanyaan berparameter biasanya mudah untuk disediakan. Walau bagaimanapun, kesukaran timbul apabila menangani keadaan kompleks yang melibatkan berbilang nilai.

Pertimbangkan pertanyaan berikut yang merangkumi kedua-dua keadaan DALAM dan keadaan SUKA:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Salin selepas log masuk

Dalam kes ini, CategoryIDs ialah senarai nombor yang dipisahkan koma dan Nama ialah rentetan yang mungkin mengandungi aksara khas. Cabarannya terletak pada parameterkan nilai ini dengan betul.

Penyelesaian

Untuk menangani isu ini, kami membina jujukan nama parameter @p0 melalui @pN-1, di mana N ialah bilangan ID kategori dalam tatasusunan. Kami kemudian membuat parameter untuk setiap nama dan menetapkan ID kategori yang sepadan sebagai nilai.

Untuk keadaan LIKE, kami menggunakan gabungan rentetan untuk membina ungkapan carian kabur yang mengandungi @name.

Berikut ialah contoh untuk menggambarkan proses:

string Name = "someone";
int[] categoryIDs = new int[] { ... };

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.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

Pertanyaan berparameter sepenuhnya ini memastikan keselamatan dan fleksibiliti dalam mengendalikan keadaan yang kompleks. Walaupun contoh menggunakan tatasusunan, teknik ini boleh digunakan pada mana-mana koleksi nilai.

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