动态参数和查询

时间:2011-07-29 05:58:40

标签: asp.net search

我正在为我的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 :(得分:0)

只是预感,但可能是因为你没有为Category提供索引器吗?

prm.Value = Category.Value;

我认为应该是:

prm.Value = Category[i].Value;