Передача параметра SQL в предложение IN () с использованием типизированных наборов данных в .NET

Прежде всего извиняюсь, так как на этом сайте есть похожие вопросы, но ни один из них не дает прямого ответа на эту проблему.

Я использую типизированные наборы данных в VS 2010. Я создаю TableAdapter в наборе данных с запросом вроде:

SELECT * from Table WHERE ID IN(@IDs)

Теперь, если я вызываю: TableAdapter.Fill (MyDataTable, «1,2,3») , возникает ошибка о том, что VS не может преобразовать 1,2,3 в тип int. Достаточно справедливо.

Итак, я решил изменить тип параметра (т.е. @ID) на строковый в коллекции параметров. Повторите попытку - все еще то же сообщение об ошибке.

Есть ли способ, которым этот типизированный набор данных может принять мой параметр «1,2,3»? На данный момент у меня есть только несколько параметров для передачи, поэтому я могу легко создать 5 или около того параметров и передать их по отдельности, а что, если их сотни? Есть ли способ вызвать метод Fill () с параметром, разделенным запятыми?

(я знаю, что могу использовать динамический SQL для создания оператора и его выполнения, но предпочел бы, если есть другой способ позволяя мне сохранить свой типизированный набор данных для использования, например, в ReportViewer / bindingsources)

13
задан harpo 23 March 2011 в 07:09
поделиться