gpt4 book ai didi

c# - 在 WHERE 子句中操作可选参数

转载 作者:行者123 更新时间:2023-11-30 20:02:55 25 4
gpt4 key购买 nike

我正在处理一个网络表单,该表单接收一个字符串,该字符串包含带有 SQL 参数的 SQL 查询语句。它为每个参数生成一个 ASP.NET 控件,然后将每个控件的值分配给将由 SqlCommand 使用的 SQL 查询字符串的参数。填写DataAdapter .

我在管理可选参数方面遇到了一些问题。

例如

1) 将字符串传递给页面:

string query = "SELECT * FROM Table WHERE Field1=@P1 AND field2=@P2";

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 语句。

最佳答案

将您的查询更改为最少:

string query="SELECT * FROM Table WHERE Field1=@P1

然后在其余部分附加一个条件:

if(P2.Text != "")
{
cmd.Parameters.AddWithValue("@P2",P2.Text);
query += " AND field2=@P2";
}

关于c# - 在 WHERE 子句中操作可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15945942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com