Я в процессе преобразования нескольких запросов, которые были жестко закодированы в приложении и построены на лету для параметризованных запросов. У меня возникли проблемы с одним конкретным запросом, который имеет in
положение:C# Параметрированный запрос MySQL с условием `in`
UPDATE TABLE_1 SET STATUS = 4 WHERE ID IN (1, 14, 145, 43);
Первый параметр легко, так как это просто нормальный параметр:
MySqlCommand m = new MySqlCommand("UPDATE TABLE_1 SET STATUS = ? WHERE ID IN (?);");
m.Parameters.Add(new MySqlParameter("", 2));
Однако, второй параметр является список целых чисел, представляющих идентификаторы строк, которые нуждаются в обновлении. Как передать список целых чисел для одного параметра? В качестве альтернативы, как бы вы решили настроить этот запрос, чтобы вам не приходилось полностью его создавать каждый раз, когда вы его вызываете, и можете предотвратить атаки SQL-инъекций?
дубликата http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause (хотя это SQL-сервер вместо MySQL , вряд ли будет действительно отличаться) –
Решение, предлагаемое там, было признано невероятно медленным, хотя оно отвечает на вторую половину моего вопроса. – Elie
Есть * лоты * предлагаемых решений. Принятый ответ не самый популярный. –