2011-07-29 108 views
0

我正在爲我的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; 

回答

0

只是一種預感,但是那也許是因爲你不提供分類索引?

prm.Value = Category.Value; 

我想它應該是:

prm.Value = Category[i].Value; 
+0

@的所有做爲計時首先,感謝你提到你的interesting.As,我不能it.So,我得到了同樣的錯誤。 – Selo

+0

@Selo - 它會給你什麼錯誤?另外,如果你選擇了多個類別,你的命令字符串'sorgu'很可能不起作用,因爲它看起來像這樣:'Select * From Urnler where Kategori = @ cat0Kategori = @ cat1Kategori = @ cat3'等等。 – Tim

+0

@ Tim-正如你所說,我正在使用查詢。但是,我得到了同樣的錯誤。另外,我收到「cmd.parameters.add(prm);」中的錯誤。線。 – Selo