2016-01-09 49 views
-1

我是ASP.Net的新手,需要一些幫助。在C中選擇多個下拉列表的動態SQL

這是我的問題:我的應用程序中有4個下拉菜單,一個按鈕說搜索,網格視圖顯示結果。我試圖根據下拉的值過濾結果。

所以我寫的查詢爲「select * from table where column1 = dd1.SelectedItem.Value」,但棘手的部分是我希望顯示結果,即使選擇了其中一個下拉列表或者其中兩個是選中或全部選中。我如何在SQL查詢中編寫Where部分?我知道我必須使用動態SQL,但我不知道動態SQL。

回答

0

首先,你應該在一個變量存儲dd1.SelectedItem.Value作爲

string v = dd1.SelectedItem.Value.ToString(); 

然後創建您的查詢字符串作爲

string q = "select * from table where (column1 is null or column1=" + v + ")"; 

然後使用此代碼:

SqlCommand com = new SqlCommand(q, yoursqlconnection); 
SqlDataAdapter da = new SqlDataAdapter(com); 
DataTable dt = new DataTable(); 
da.Fill(dt); 
+2

這是開放的SQL注入攻擊。不要使用這個。在sql查詢字符串中不要連接參數的值。 –

+0

我知道,但他/她是初學者。他/她應該使用實體框架。 –

+0

他/她也可以使用具有參數的過程和函數,但他/她想要連接sql查詢字符串中的參數值。 –

1

使用類似這樣的東西

  string q = @" 
SELECT * FROM table 
WHERE 
(@value1 IS NULL OR column1 = @value1) 
AND 
(@value2 IS NULL OR column2 = @value2) 
AND 
(@value3 IS NULL OR column3 = @value3) 
"; 

      var command = new SqlCommand(); 
      command.CommandText = q; 

      command.Parameters.AddWithValue("@value1", dd1.SelectedItem.Value); 
      command.Parameters.AddWithValue("@value2", dd2.SelectedItem.Value); 
      command.Parameters.AddWithValue("@value3", dd3.SelectedItem.Value); 
+0

謝謝,我試過了,但它不承認@ value1參數我得到一個錯誤.. – Sai

+0

添加您使用的代碼,所以我可以幫助你 –

+0

我試過com.Parameters.Add(「@ value1」,SqlDbType.VarChar,100,v) ;但是錯誤是「參數化查詢」(@ value1 varchar(100),@ value2 varchar(100),@ values3 varchar(100)''需要參數'@ value1',該參數未提供。 – Sai

相關問題