Динамический параметр и запрос - PullRequest
0 голосов
/ 29 июля 2011

Я создаю поисковую систему для моей страницы asp. Есть 15 вариантов фильтрации, таких как Цена, Дата, Имя и т. Д. Кроме того, использование параметров фильтрации не является обязательным. Если параметры фильтрации оставлены пустыми, поиск будет выполнен. Я нашел решение, используя if и string.

string sorgu = "";
dbcommand cmd = CommandClassım.YeniCommand();
sorgu += "Select * From Urunler Where ";
if(UrunAdi.Text != string.Empty)
{
sorgu += "UrunAdi = @UrunAdi";
dbparameters prm = cmd.createparameter();
prm.Parametername = "@UrunAdi";
prm.Value = UrunAdi.Text;
prm.DbType = DbType.String;
cmd.Parameters.Add(prm);
}
cmd.CommandText = sorgu; 

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

Когда я пытаюсь запустить приведенный ниже код, я получаю следующую ошибку.

Must declare the scalar variable "@cat0". 

Код:

string sorgu = "";
DbCommand cmd = CommandClassım.YeniCommand();
sorgu += "Select * From Urunler Where ";
DbParameter prm = cmd.CreateParameter;
for(int i = 0; i < Category.Length; i++)
{
sorgu += "Kategori = @cat" + i.ToString();
prm.ParameterName = "@cat" + i.ToString();
prm.Value = Category.Value;
prm.DbType = DbType.String;
cmd.Parameters.Add(prm);
}
cmd.CommandText = sorgu;  

1 Ответ

0 голосов
/ 29 июля 2011

Просто догадка, но может ли быть так, что вы не предоставляете индексатор для категории?

prm.Value = Category.Value;

Я думаю, это должно быть:

prm.Value = Category[i].Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...