tableAdapter, параметризованный sql запрос

359
04 июня 2017, 17:31

Как можно передать количество параметров, которое может каждый раз меняться в sql запрос? Мне нужно следующий запрос оформить для всевозможного количества параметров: SELELT * FROM table WHERE name IN (value1, value2, value3, value4)

Т.е. не обязательно только 4 значения, их может быть и 10, и одно, и каждый раз их количество будет меняться. Я могу собрать строку, как вариант, с нужными значениями, но как ее потом передать в параметризованный запрос? В самом коде применяю все запросы к элементу datagridview через tableAdapter: this.запрос_продуктовTableAdapter.Fill(...);

п.с. Пишу в VS 15 на C#, БД подключал через элемент datagridview, сама БД представляет собой локальный файл .mdb, запросы пишу через мастера настройки запроса.

Answer 1
SELECT *
FROM table
WHERE FIND_IN_SET(name, @parameter);

Т.е. параметр один, а в нём сколько угодно проверяемых значений через запятую. Тип параметра @parameter - строковый, кавычек и прочей ерунды не требуется, проверка выполняется на точное совпадение, т.е. всякие ведущие и замыкающие пробелы являются значимыми.

PS. Если в поле name возможно наличие запятой, способ неприменим. Квотирование тут не работает.

Answer 2

Попробуйте создать лист параметров и сгенерировать текст запроса:

   List<string> sqlParams = new List<string>();
    sqlParams.Add("value1");
    sqlParams.Add("value2");
    sqlParams.Add("value3");
    sqlParams.Add("value4");
    sqlParams.Add("value5");
    var sqlCommandText = string.Format("SELELT * FROM table WHERE name IN ({0})", string.Join(",", sqlParams));
    MessageBox.Show(sqlCommandText);

Нужно еще учитывать тип параметра, для строкового нужно еще добавить ' - "'value1'".

READ ALSO
Разбор Binding DataGrid и ComboBox

Разбор Binding DataGrid и ComboBox

Очень нужно разобраться с тем как работает ComboBox в таблице DataGrid на WPFМне важно чтобы было грамотно разъяснено и правильно реализовано

324
Как программировать на C# в Unreal Engine?

Как программировать на C# в Unreal Engine?

На оффициальном сайте http://mono-uegithub

664
Не скрывается папка

Не скрывается папка

Если папки нет, то создать скрытую не получается, если же папка существует, она скрывается!

319
Переливание кнопки c#

Переливание кнопки c#

Работаю с WinForm C# и возник такой вопрос: можно ли сделать что бы кнопки в программе плавно меняли цвета по порядку как радуга? Просто открываю...

365