consultas parametrizadas en .Net siempre tener este aspecto en los ejemplos:consultas con parámetros con LIKE y en condiciones
SqlCommand comm = new SqlCommand(@"
SELECT *
FROM Products
WHERE Category_ID = @categoryid
",
conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Pero estoy corriendo en una pared de ladrillo tratando de hacer lo siguiente:
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;
Dónde
- CategoryIDs es una lista separada por comas de los números "123 456 789" (sin comillas)
- nombre es una cadena, posiblemente con comillas simples y otros personajes malos
¿Cuál es la sintaxis correcta para esto?
En clasule "IN" debe especificar todos los valores de comandos SQL. Y aun así, agregue valor a la colección "Parámetros". Si pasa el valor de cadena en SQL a través del valor del parámetro, no debe temer la inyección sql. – TcKs
Puede escribir su consulta como 'DONDE nombrar COMO CONCAT ('%',?, '%')' –