2011-07-29 15 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; 

私はそれがあるべきだと思うだろう:すべてのTim-まず@

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

、あなたが言及したあなたのinteresting.Asためのおかげで、私はit.So、私はエラーを同じ持っていない可能性があります。 – Selo

+0

@Selo - どのラインでエラーが出るのですか?また、あなたのコマンド文字列 'sorgu'は、複数のカテゴリーが選択されているとうまくいかなくなります。' Select * From Urnler Whereカテゴリ= @ cat0Kategori = @ cat1Kategori = @ cat3'などです。 – Tim

+0

@ Tim-あなたが言ったように、私はクエリを使用しています。しかし、私は同じエラーを持っています。また、 "cmd.parameters.add(prm);"ライン。 – Selo