Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Pertanyaan Berparameter dengan Berkesan dengan Keadaan LIKE dan IN dalam .NET?

Bagaimana Menggunakan Pertanyaan Berparameter dengan Berkesan dengan Keadaan LIKE dan IN dalam .NET?

Patricia Arquette
Lepaskan: 2024-12-29 05:38:17
asal
159 orang telah melayarinya

How to Effectively Use Parameterized Queries with LIKE and IN Conditions in .NET?

Pertanyaan Berparameter dengan Syarat SUKA dan DALAM

Menggunakan pertanyaan berparameter dalam .Net biasanya mengikut corak tertentu, seperti yang ditunjukkan dalam contoh:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Salin selepas log masuk

Walau bagaimanapun, melakukan pertanyaan yang lebih kompleks dengan syarat seperti IN dan LIKE boleh dilakukan mencabar.

Melaksanakan Syarat IN dan LIKE

Pertimbangkan kes di mana anda mempunyai senarai ID kategori yang disimpan sebagai rentetan dipisahkan koma dan nama produk yang berpotensi mengandungi aksara khas. Untuk membina pertanyaan berparameter untuk senario ini:

  1. Pecahkan keadaan IN: Tukar rentetan ID kategori yang dipisahkan koma kepada tatasusunan integer.

    int[] categoryIDs = Array.ConvertAll(CategoryIDs.Split(','), int.Parse);
    Salin selepas log masuk
  2. Jana parameter nama: Buat jujukan nama parameter, cth., @p0, @p1, @p2 dan seterusnya.

    string[] parameters = new string[categoryIDs.Length];
    for (int i = 0; i < categoryIDs.Length; i++)
    {
       parameters[i] = "@p" + i;
    }
    Salin selepas log masuk
  3. Tambahkan parameter pada arahan : Tambahkan setiap parameter pada arahan dengan ID kategori yang sepadan sebagainya nilai.

    for (int i = 0; i < categoryIDs.Length; i++)
    {
       comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
    }
    Salin selepas log masuk
  4. Bina keadaan IN: Sertai nama parameter ke dalam rentetan yang dipisahkan koma dalam klausa IN pertanyaan.

    WHERE Category_ID IN (" + string.Join(",", parameters) + ")
    Salin selepas log masuk
  5. Kendalikan syarat LIKE: Parameterkan Keadaan LIKE dengan menggunakan aksara kad bebas dan rentetan input.

    OR name LIKE @name
    Salin selepas log masuk

    dengan @name ialah parameter yang ditambahkan pada arahan dengan rentetan input sebagai nilainya.

Menggabungkan semuanya, pertanyaan berparameter menjadi:

string Name = "someone";
int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617, 1618, 1619, 1620, 1951, 1952 };

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

Pendekatan ini mencipta pertanyaan berparameter sepenuhnya yang menangani kedua-dua keadaan IN dan LIKE dengan parameterisasi yang betul.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pertanyaan Berparameter dengan Berkesan 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