ASP, C # & SQL сложные параметры / примеры запросов, пожалуйста - PullRequest
0 голосов
/ 23 августа 2011

Я создаю веб-страницу, на которой есть несколько элементов управления, таких как CheckBoxList и Listbox (с включенным множественным выбором). Эти элементы управления будут связаны с таблицей базы данных SQL, один для цветов и один для размеров. Каков наилучший способ разработки запроса, прежде всего, оператора 'where' для фильтрации рубашек, перечисленных в виде сетки, которые соответствуют выбранным размерам и цветам, сделанным пользователем. Например, если пользователь выберет красный и синий цвета из colorsCheckBoxList, а средний и большой - из sizeListbox, то в виде сетки будут отображаться только рубашки красного и среднего и большого размера, а также синие рубашки среднего и большого размера. Я проделал большую часть работы, я просто не могу придумать лучший способ разработать предложение «где». Я могу легко создать его, если разрешу только один выбор для каждого элемента управления, но предпочту разрешить множественный выбор.

Это страница .aspx с кодом позади страницы (C #). Я читал, что использование параметров - лучший метод для чистого кода и безопасности, но я хотел бы услышать, что думают другие.

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

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Вы можете использовать Табличные значения или параметры XML, чтобы передавать идентификаторы множества для размера и цвета.Я бы лично выбрал табличные параметры.

0 голосов
/ 31 августа 2015

Выбор будет варьироваться в зависимости от размера и цвета, нескольких или одного выбора для обоих. Вы можете тренироваться с помощью хранимой процедуры. (Также это будет быстрее). При передаче параметра в sp вы можете передать выборки для обоих в виде строки. с разделением символов запятой e, g для размера «красный, синий, зеленый», если выбрано это три. То же самое для цвета. В sp вы можете сначала разделить параметр, разделив ',' и запросив

// создать имя sp

// передать параметр цвет и размер

// begin sp

// написать для разделения кода параметра, может быть, для оператора затем

   SELECT col1, col2, col3 from shirts
   WHERE size IN (separated param list)  AND
   color IN (separated param list of colors)

// end sp

0 голосов
/ 23 августа 2011

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

SELECT shirtid, shirtname
FROM shirts
WHERE colorID IN (REDSHIRTID, BLUESHIRTID)

Вы бы поместили свои идентификаторы из списка выбора как REDSHIRTID и BLUESHIRTID.

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