#c# #odbc #where-in
#c# #odbc #где-в
Вопрос:
Новичок в C #, пытаюсь поместить массив в SQL-инструкцию IN(). Другими словами, выполните запрос примерно так:
ВЫБЕРИТЕ * ИЗ таблицы, ГДЕ что-то В ( [array_elem_1], [array_elem_2] … )
Довольно легко сделать в PHP / MySQL:
mysql_query('SELECT * FROM table WHERE something IN("' . implode('","', array_map('mysql_real_escape_string', $values)) .'")');
Но лучше всего я мог бы разобраться с C # / ODBC:
using (OdbcCommand cmd = new OdbcCommand("SELECT * FROM table WHERE something IN (" String.Join(",", Enumerable.Repeat("?", values.Count)) ")", conn))
{
foreach (var kvp in values)
{
var param = cmd.CreateParameter();
param.Value = kvp.Key;
cmd.Parameters.Add(param);
}
cmd.ExecuteReader();
}
Возможно, есть более приятный способ сделать это без такого большого количества кода?
Спасибо!
Комментарии:
1. Вы пробовали SqlHelper ? Я думаю, это будет то, что вы хотите
2. и вот исходный код
3. Спасибо за совет. Итак, по сути, я должен использовать внешнюю библиотеку — в интерфейсе ODBC нет ничего, что могло бы упростить задачу? Я больше думал о какой-то функции «escape string»… Также на странице, похоже, указано, что она работает только с SQL Server…