2014-09-15 2 views
0

Я хочу, чтобы выполнить запросКак передать список значений в качестве параметра OleDbCommand

SELECT id, name FROM MyTable WHERE (id, name) IN ((1, 'One'), (2, 'Two')) 

использованием OleDbConnection и OleDbCommand. Можно ли передать содержимое предложения IN в качестве параметра для команды? Если да, то какое значение я должен передать значение параметра? Список, IEnumerable или что-то еще? Если нет, то можно передать список одиночных значений, как для запроса

SELECT id, name FROM MyTable WHERE id IN (1, 2) 
+0

Почему бы просто не назначить целое IN-предложение целой строке кода, а затем сделать запрос «SELECT id, name FROM MyTable WHERE (id, name) IN» + InClauseString – jgok222

+1

http://stackoverflow.com/questions/337704/parameterize-a-sql-in-clause – Steve

+0

Просто обратите внимание, что ваш первый фрагмент не является допустимым синтаксисом SQL – Steve

ответ

1

Пока я знаю, что вы не можете. Я пытался что-то подобное в прошлом, и единственным способом, который я нашел, было создание хранимой процедуры, которая получает строку, разделенную запятыми, и динамически создает запрос, вызывая sp_execute в конце с результирующей строкой.

0

Посмотрите на http://www.codeproject.com/Tips/231217/Parameters-SqlCommand-vs-OledbCommand-and-OdbcComm

Вы бы нести ответственность за написание SQL, конечно. SQL не принимает анонимные объекты для параметра IN. Вы должны указать, что вы ищете в одном поле.

Select * from table where field in (1,2,3) --Assuming field is an integer 

например.