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
Susan SarandonOriginal
2024-12-31 09:53:09159Durchsuche

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;

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

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!

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