Передача списка с разделителями-запятыми в качестве параметра в предложение IN для запроса db2 с помощью конструктора в Visual Studio 2008 - PullRequest
1 голос
/ 27 марта 2009

Я хочу передать список значений с запятыми в качестве параметра в запрос, который я создаю, используя конструктор в Visual Studio 2008, основанный на некоторых строго типизированных руководствах по DAL, через которые я проходил. Запрос идет к базе данных DB2. Вот что я хочу сделать:

выберите * из цен, где клиент в (?)

Работает нормально, победа, которую я передаю в 123456 как?

Но происходит сбой, когда я передаю '123456' (это поле типа char, поэтому я не знаю, почему это не работает; должно быть, это добавляется за кулисами) или 123456, 123457 или '123456', ' 123457 '

Я добавляю эту страницу на портал, где весь доступ к данным осуществляется на основе модели конструктора DAL с помощью BLL, который ее вызывает, поэтому я хотел сделать это таким образом для согласованности. Возможно ли это или это ситуация, когда инструмент просто недостаточно гибок, чтобы выполнить то, что мне нужно? Спасибо.

1 Ответ

1 голос
/ 27 марта 2009

Это очень распространенная ошибка, которую люди делают с параметризованными запросами. Необходимо помнить, что заполнитель с одним параметром "?" заменяет одно значение .

См. Ссылку на вопрос ниже для умного решения этой проблемы от Джоэла Спольски.

" Параметризация предложения SQL IN? "

Также на этот же вопрос ответили многие другие, повторив, что стандартным решением является динамическое построение SQL-запроса с добавлением заполнителя параметра для каждого значения, которое необходимо передать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...