powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Параметры SqlDataSource и multiple у Listbox
8 сообщений из 8, страница 1 из 1
Параметры SqlDataSource и multiple у Listbox
    #38584678
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть SqlDataSource, у которого задана команда SELECT:
Код: c#
1.
SELECT * FROM TABLE WHERE field = @param


@param имеет источник QueryString
В момент обработки события смены выделенного индекса в ListBox, задается значение параметра:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  for (int i = 0, j = 0; i < ListBox2.Items.Count; i++)
                {
                    if (ListBox2.Items[i].Selected)
                    {
                        if (j > 0)
                        {
                            AddStaff = AddStaff + "','" + ListBox2.Items[i].Value;
                        }
                        else
                        {
                            AddStaff = AddStaff + ListBox2.Items[i].Value;
                        }
                        j++;
                    }
                }
                //AddStaff = AddStaff + ")";
                SqlDataSource2.SelectParameters[0].DefaultValue = AddStaff;


Насколько я понимаю, при подстановке значения параметра в SQL строку, вокруг него ставятся одинарные ковычки (' ')
Поэтому, если выделенных значений несколько, между ними проставляются ковычки и запятая ( ' , ').
Однако при выборе более одного значения, ничего не отбирается. Что я делаю не так?
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584682
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, в примере некорректно написал SQL запрос.
Правильный запрос:
Код: c#
1.
SELECT * FROM TABLE WHERE field IN (@param)
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584883
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть мысли по этому поводу?
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584923
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он вставляет это вам как 1 целую строку в качестве параметра, чтоб собственно очевидно.
хотите провернуть что задумали то меняйте запрос в селекте в коде. И хорошо если сделаете через параметры также:
Код: sql
1.
SELECT * FROM TABLE WHERE field IN (@p1,@p2...)


Код: c#
1.
SqlDataSource.SelectParameters.Add("p1",type,value) ....
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584941
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vhandmadeFromRu,
Разбивать на несколько параметров не самый лучший вариант, у меня их может быть 5, 10 и больше. Не хочу завязываться на ограниченное число параметров.
Не очень понял с одной целой строкой.
Есть ли разница, если:
@param = "value1,value2"
и
@param1 = "value1" и @param2 = "value2", если в конечном счете это будет одна и та же строка, обрабатываемая SQL?
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584948
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно было бы знать, в каком виде параметр подставляется в строку SQL.
Если запрос:
Код: c#
1.
SELECT * FROM table WHERE field = @param


Значение параметра равно: value1, то в каком виде будет сформирована строка?
Код: sql
1.
SELECT * FROM table WHERE field = 'value1' 

?
Тогда вставка одинарных кавычек и запятых (в приведенном выше примере) должна была сработать.
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38584955
DmitriyVKPI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRuхотите провернуть что задумали то меняйте запрос в селекте в коде.
[/src]
Такое делал уже. Динамически собирал запрос через функции. Проблему это решает, однако хочется найти более изящный вариант (с применением параметров) и статичным запросом.
...
Рейтинг: 0 / 0
Параметры SqlDataSource и multiple у Listbox
    #38585048
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyVKPIРазбивать на несколько параметров не самый лучший вариант, у меня их может быть 5, 10 и больше. Не хочу завязываться на ограниченное число параметров.

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

DmitriyVKPIНе очень понял с одной целой строкой.
Есть ли разница, если:
@param = "value1,value2"
и
@param1 = "value1" и @param2 = "value2", если в конечном счете это будет одна и та же строка, обрабатываемая SQL?

вообще разница есть. Или вы думает скул потом изменит семантику запроса потому что вы в строке экранировали подстроки?

DmitriyVKPIИнтересно было бы знать, в каком виде параметр подставляется в строку SQL.

эм ... ничего нового, по значению.

DmitriyVKPIТогда вставка одинарных кавычек и запятых (в приведенном выше примере) должна была сработать.

нет, вы меняете значение параметра, а не сам запрос в таком случае.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Параметры SqlDataSource и multiple у Listbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]