我正在處理一個Web表單,該表單接收一個包含帶有SQL參數的SQL查詢語句的字符串。它爲每個參數生成一個ASP.NET控件,然後將每個控件的值分配給SQL查詢字符串的參數,SqlCommand
將使用該參數填充DataAdapter
。操作WHERE子句中的可選參數
我有一些問題來管理可選參數。
Ex。
1)傳遞字符串到頁:
string query = "SELECT * FROM Table WHERE [email protected] AND [email protected]";
2)生成對每個參數
TextBox P1 = new TextBox();
P1.ID = "P1";
...
TextBox P2 = new TextBox();
P2.ID = "P2";
...
PanelParameters.Controls.Add(P1);
PanelParameters.Controls.Add(P1);
3)在用戶點擊網頁的控制通過每個的值參數SqlCommand
作爲參數:
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@P1", P1.Text);
cmd.Parameters.AddWithValue("@P2", P2.Text);
4)在這裏沒關係!
但是,如果參數是可選我該如何管理它?
如果P2是可選的,用戶無法編譯它,在這種情況下,我不想設置P2 = NULL
(設置參數DbNull.Value
的值),但我希望P2會從查詢SQL中消失。
你能幫我嗎?
*更新* 我無法編輯我收到的查詢,因爲它包含非常複雜的SQL語句。
謝謝你這是一個非常好的主意,但我不能改變查詢,然後追加,因爲查詢是通過我讀取的XML文件接收到的,並且由於SQL語句的複雜性,通常很難分解。 – Teo 2013-04-11 12:53:59
你應該更新你的問題來顯示這個。我看到的唯一解決方案就是分析收到的查詢並重構它的組件。 – 2013-04-11 13:00:41