C # ODBC, использующий параметры в запросе IN ()

#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…