Heim > Datenbank > MySQL-Tutorial > Wie können parametrisierte Abfragen mit LIKE- und IN-Bedingungen in .NET effektiv verwendet werden?

Wie können parametrisierte Abfragen mit LIKE- und IN-Bedingungen in .NET effektiv verwendet werden?

Patricia Arquette
Freigeben: 2024-12-29 05:38:17
Original
160 Leute haben es durchsucht

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

Parametrierte Abfragen mit LIKE- und IN-Bedingungen

Die Verwendung parametrisierter Abfragen in .Net folgt normalerweise einem bestimmten Muster, wie im Beispiel gezeigt:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Nach dem Login kopieren

Die Durchführung komplexerer Abfragen mit Bedingungen wie IN und LIKE kann jedoch eine Herausforderung sein.

Die Implementierung von IN und LIKE-Bedingungen

Stellen Sie sich den Fall vor, dass Sie eine Liste von Kategorie-IDs haben, die als durch Kommas getrennte Zeichenfolge gespeichert sind, und einen Produktnamen, der möglicherweise Sonderzeichen enthält. So erstellen Sie eine parametrisierte Abfrage für dieses Szenario:

  1. Brechen Sie die IN-Bedingung auf: Wandeln Sie die durch Kommas getrennte Kategorie-ID-Zeichenfolge in ein Array von Ganzzahlen um.

    int[] categoryIDs = Array.ConvertAll(CategoryIDs.Split(','), int.Parse);
    Nach dem Login kopieren
  2. Parameternamen generieren: Eine Sequenz von Parametern erstellen Namen, z. B. @p0, @p1, @p2 usw.

    string[] parameters = new string[categoryIDs.Length];
    for (int i = 0; i < categoryIDs.Length; i++)
    {
       parameters[i] = "@p" + i;
    }
    Nach dem Login kopieren
  3. Parameter zum Befehl hinzufügen: Fügen Sie jeden Parameter zum Befehl hinzu mit der entsprechenden Kategorie-ID als Wert.

    for (int i = 0; i < categoryIDs.Length; i++)
    {
       comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
    }
    Nach dem Login kopieren
  4. Konstruieren Sie das IN Bedingung: Verknüpfen Sie die Parameternamen in einer durch Kommas getrennten Zeichenfolge innerhalb der IN-Klausel der Abfrage.

    WHERE Category_ID IN (" + string.Join(",", parameters) + ")
    Nach dem Login kopieren
  5. Verarbeiten Sie die LIKE-Bedingung: Parametrisieren die LIKE-Bedingung durch Verwendung eines Platzhalterzeichens und der Eingabezeichenfolge.

    OR name LIKE @name
    Nach dem Login kopieren

    wobei @name ein Parameter ist, der dem Befehl mit hinzugefügt wird die Eingabezeichenfolge als Wert.

Alles zusammen ergibt die parametrisierte Abfrage:

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";
Nach dem Login kopieren

Dieser Ansatz erstellt eine vollständig parametrisierte Abfrage, die sowohl IN als auch anspricht LIKE-Bedingungen mit richtiger Parametrisierung.

Das obige ist der detaillierte Inhalt vonWie können parametrisierte Abfragen mit LIKE- und IN-Bedingungen in .NET effektiv verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage