Parametrisierte Abfragen mit LIKE- und IN-Bedingungen

Parametrisierte Abfragen .Net immer schauen, wie diese in den Beispielen:

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

Aber ich bin mit einer Mauer versuchen, Folgendes zu tun:

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;

Wo

  • CategoryIDs ist eine durch Kommata getrennte Liste von zahlen "123,456,789" (ohne Anführungszeichen)
  • Name ist eine Zeichenkette, gegebenenfalls mit single-quotes und andere schlechte Zeichen

Was ist die richtige syntax dafür?

InformationsquelleAutor der Frage Tom Ritter | 2008-11-19

Schreibe einen Kommentar