C # ODBC с использованием параметров в запросе IN () - PullRequest
1 голос
/ 04 ноября 2011

Новое в C #, попытка поместить массив в оператор IN () SQL. Другими словами, выполните запрос примерно так:

SELECT * FROM таблицы, где что-то находится ([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();
}

Возможно, есть лучший способ сделать это без такого большого количества кода? Спасибо!

...