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
Susan Sarandonasal
2024-12-20 03:39:12563semak imbas

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();
  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)));
  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]));
    }
  4. Laksanakan Perintah:
    Laksanakan arahan sebagai biasa:

    reader = cmd.ExecuteReader();

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!

Kenyataan:
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