Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Pernyataan IN SQL dengan Selamat dengan SqlParameter dan Senarai?

Bagaimana Menggunakan Pernyataan IN SQL dengan Selamat dengan SqlParameter dan Senarai?

Susan Sarandon
Lepaskan: 2024-12-20 03:39:12
asal
618 orang telah melayarinya

How to Safely Use SQL's IN Statement with SqlParameter and a List?

SQL IN Statement dengan SqlParameter dan List

Apabila cuba untuk melaksanakan pernyataan IN dengan SqlParameter menggunakan List , ArgumentException boleh timbul kerana ketidakupayaan untuk memetakan senarai kepada pembekal yang diketahui taip. Isu ini boleh diselesaikan dengan menggunakan pendekatan berikut:

  1. Tukar Senarai kepada Tatasusunan:
    Tukar Senarai kepada tatasusunan rentetan, seperti:

    string[] paramArray = settingList.ToArray();
    Salin selepas log masuk
  2. Formatkan Penyata SQL:
    Formatkan pernyataan SQL dengan pemegang tempat untuk setiap parameter, menggunakan bilangan parameter dalam tatasusunan:

    string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
    sql = string.Format(sql, string.Join(",", paramArray.Select((x, i) => "@settings" + i)));
    Salin selepas log masuk
  3. Tambah Parameter:
    Untuk setiap elemen dalam tatasusunan, tambahkan SqlParameter pada objek arahan, menggunakan nama dan nilai yang sesuai:

    for (int i = 0; i < settingList.Count; ++i)
    {
        cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i]));
    }
    Salin selepas log masuk
  4. Laksanakan Perintah:
    Laksanakan arahan sebagai biasa:

    reader = cmd.ExecuteReader();
    Salin selepas log masuk

Pendekatan ini menyediakan cara yang selamat dan cekap untuk melaksanakan pernyataan IN dengan Senarai menggunakan SQLParameters.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan IN SQL dengan Selamat dengan SqlParameter dan Senarai?. 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