Teo*_*Teo 2 c# sql asp.net sqlcommand
我正在处理一个Web表单,它接收一个包含带SQL参数的SQL查询语句的字符串.它为每个参数生成一个ASP.NET控件,然后将每个控件的值分配给将用于SqlCommand填充a 的SQL查询字符串的参数DataAdapter.
我有一些问题来管理可选参数.
防爆.
1)将字符串传递给页面:
string query = "SELECT * FROM Table WHERE Field1=@P1 AND field2=@P2";
Run Code Online (Sandbox Code Playgroud)
2)为每个参数生成Web控件
TextBox P1 = new TextBox();
P1.ID = "P1";
...
TextBox P2 = new TextBox();
P2.ID = "P2";
...
PanelParameters.Controls.Add(P1);
PanelParameters.Controls.Add(P1);
Run Code Online (Sandbox Code Playgroud)
3)点击时将每个参数的值传递给SqlCommandas参数:
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@P1", P1.Text);
cmd.Parameters.AddWithValue("@P2", P2.Text);
Run Code Online (Sandbox Code Playgroud)
4)就在这里,没关系!
但如果参数是可选的,我该如何管理呢?
如果P2是可选的,则用户无法编译它,在这种情况下我不想设置P2 = NULL(设置参数的值DbNull.Value),但我希望P2将从查询SQL中消失.
你能帮助我吗?
*更新* 我无法编辑我收到的查询,因为它包含非常复杂的SQL语句.
将查询更改为最小值:
string query="SELECT * FROM Table WHERE Field1=@P1
Run Code Online (Sandbox Code Playgroud)
然后将其余条件附加到其他条件:
if(P2.Text != "")
{
cmd.Parameters.AddWithValue("@P2",P2.Text);
query += " AND field2=@P2";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |