gpt4 book ai didi

c# - ado.net 中 where 子句中的空值参数

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:07 26 4
gpt4 key购买 nike

我如何在 Ado.net 中使用参数在 where 子句中设置可能为空值的 Sql 命令。

SQL语句:

Select * from ViewSessionTarget where AgentId = @Parameter

Ado.net代码

using (SqlConnection connection = new SqlConnection(@"my connection string"))
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
var parameter = command.Parameters.AddWithValue("@Parameter", DBNull.Value);
parameter.DbType = DbType.Int64;

SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Debug.Write(reader["SessionId"]);
}
}

结果集将始终包含 0 个元素,因为在我的 where 子句中我有一个空值。所以等号 (=) 不起作用,我必须使用“is”。

但是当我将我的 sql 更改为:

Select * from ViewSessionTarget where AgentId is @Parameter

我收到一个 SqlException:“'@Parameter' 附近的语法不正确。”

最佳答案

我找到了一种更简洁的方法(至少对我而言):

SELECT * FROM ViewSessionTarget 
WHERE (AgentId = @Parameter OR (@Parameter IS NULL AND AgentID IS NULL));

关于c# - ado.net 中 where 子句中的空值参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706086/

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