Heim >Datenbank >MySQL-Tutorial >Wie parametrisiere ich Abfragen mit LIKE- und IN-Bedingungen in .NET?

Wie parametrisiere ich Abfragen mit LIKE- und IN-Bedingungen in .NET?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 06:43:13840Durchsuche

How to Parameterize Queries with LIKE and IN Conditions in .NET?

Parametrierte Abfragen mit LIKE- und IN-Bedingungen

Bei der Verwendung parametrisierter Abfragen in .NET veranschaulichen die Beispiele typischerweise deren Verwendung in einfachen Szenarios, z Vergleichen eines einzelnen Spaltenwerts mit einem Parameter. Allerdings können die Dinge komplexer werden, wenn es um Bedingungen wie IN und LIKE geht, die mehrere Parameter oder nicht standardmäßige Zeichen beinhalten.

Abfrage mit IN-Bedingung

Betrachten wir a Abfrage, die nach Produkten basierend auf der Kategorie-ID sucht, wobei die Kategorie-ID eine durch Kommas getrennte Liste von Ganzzahlen sein kann.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 

Zur Parametrisierung Um diese Abfrage mithilfe eines ganzzahligen Arrays CategoryIDs durchzuführen, müssen wir das Array durchlaufen und für jede Kategorie-ID einen Parameter erstellen.

int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617 };

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.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";

Abfrage mit LIKE-Bedingung

Jetzt Fügen wir eine LIKE-Bedingung hinzu, die nach Produkten sucht, deren Namen eine bestimmte Zeichenfolge enthalten, möglicherweise mit Sonderzeichen.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@name%'

Um diese Abfrage zu parametrisieren, Wir erstellen einen Parameter für den Namenswert und verwenden die Verkettung, um innerhalb der Abfrage nach dem Namen zu suchen.

string Name = "someone";

SqlCommand comm = conn.CreateCommand();

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";

Mit diesem Ansatz können wir vollständig parametrisierte Abfragen erstellen, die sowohl IN- als auch LIKE-Bedingungen mit unterschiedlichen Parametern verarbeiten Typen, die die Sicherheit und Leistung unseres Datenbankzugriffs gewährleisten.

Das obige ist der detaillierte Inhalt vonWie parametrisiere ich Abfragen mit LIKE- und IN-Bedingungen in .NET?. 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