Heim >Datenbank >MySQL-Tutorial >Wie verwende ich die IN-Anweisung von SQL sicher mit SqlParameter und einer Liste?

Wie verwende ich die IN-Anweisung von SQL sicher mit SqlParameter und einer Liste?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 03:39:12563Durchsuche

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

SQL IN-Anweisung mit SqlParameter und List

Beim Versuch, eine IN-Anweisung mit einem SqlParameter unter Verwendung einer List , kann eine ArgumentException auftreten, weil die Liste nicht einem bekannten Anbietertyp zugeordnet werden kann. Dieses Problem kann durch den folgenden Ansatz gelöst werden:

  1. Konvertieren Sie die Liste in ein Array:
    Konvertieren Sie die Liste zu einem Array von Zeichenfolgen, wie zum Beispiel:

    string[] paramArray = settingList.ToArray();
  2. Formatieren Sie die SQL-Anweisung:
    Formatieren Sie die SQL-Anweisung mit einem Platzhalter für jeden Parameter, indem Sie die Anzahl der Parameter im Array:

    string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
    sql = string.Format(sql, string.Join(",", paramArray.Select((x, i) => "@settings" + i)));
  3. Hinzufügen Parameter:
    Fügen Sie für jedes Element im Array einen SqlParameter zum Befehlsobjekt hinzu und verwenden Sie dabei den entsprechenden Namen und Wert:

    for (int i = 0; i < settingList.Count; ++i)
    {
        cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i]));
    }
  4. Fügen Sie den Befehl aus Befehl:
    Führen Sie den Befehl aus als üblich:

    reader = cmd.ExecuteReader();

Dieser Ansatz bietet eine sichere und effiziente Möglichkeit, eine IN-Anweisung mit einem List auszuführen. mit SQLParametern.

Das obige ist der detaillierte Inhalt vonWie verwende ich die IN-Anweisung von SQL sicher mit SqlParameter und einer Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn