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

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

Susan Sarandon
Freigeben: 2024-12-31 09:53:09
Original
156 Leute haben es durchsucht

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

Parametrierte Abfragen mit LIKE- und IN-Bedingungen

In der Welt der .NET-Programmierung sind parametrisierte Abfragen normalerweise einfach einzurichten. Beim Umgang mit komplexen Bedingungen mit mehreren Werten treten jedoch Schwierigkeiten auf.

Betrachten Sie die folgende Abfrage, die sowohl eine IN-Bedingung als auch eine LIKE-Bedingung enthält:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Nach dem Login kopieren

In diesem Fall ist CategoryIDs a eine durch Kommas getrennte Liste von Zahlen, und Name ist eine Zeichenfolge, die Sonderzeichen enthalten kann. Die Herausforderung besteht darin, diese Werte richtig zu parametrisieren.

Lösung

Um dieses Problem anzugehen, erstellen wir eine Folge von Parameternamen @p0 bis @pN-1, wobei N ist die Anzahl der Kategorie-IDs im Array. Anschließend erstellen wir Parameter für jeden Namen und weisen die entsprechende Kategorie-ID als Wert zu.

Für die LIKE-Bedingung verwenden wir die Zeichenfolgenverkettung, um einen Fuzzy-Suchausdruck zu erstellen, der @name enthält.

Hier ist ein Beispiel zur Veranschaulichung des Prozesses:

string Name = "someone";
int[] categoryIDs = new int[] { ... };

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

Diese vollständig parametrisierte Abfrage gewährleistet Sicherheit und Flexibilität im Umgang mit komplexen Bedingungen. Während das Beispiel Arrays verwendet, ist die Technik auf jede Sammlung von Werten anwendbar.

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