gpt4 book ai didi

c# - WHERE IN(ID 数组)

转载 作者:IT王子 更新时间:2023-10-29 04:18:32 26 4
gpt4 key购买 nike

我有一个网络服务,它传递了一个整数数组。我想按如下方式执行 select 语句,但不断出现错误。我需要将数组更改为字符串吗?

[WebMethod]
public MiniEvent[] getAdminEvents(int buildingID, DateTime startDate)
{
command.CommandText = @"SELECT id,
startDateTime, endDateTime From
tb_bookings WHERE buildingID IN
(@buildingIDs) AND startDateTime <=
@fromDate";

SqlParameter buildID = new SqlParameter("@buildingIDs", buildingIDs);
}

最佳答案

你不能(很遗憾)那样做。一个 Sql 参数只能是一个值,所以你必须这样做:

WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)

当然,这需要您知道有多少个建筑物 ID,或者动态构建查询。

作为解决方法*,我已执行以下操作:

WHERE buildingID IN (@buildingID)

command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);

这将用数字替换语句的文本,最终如下所示:

WHERE buildingID IN (1,2,3,4)
  • 请注意,这接近于 Sql 注入(inject)漏洞,但由于它是一个 int 数组是安全的。任意字符串安全,但没有办法将 Sql 语句嵌入整数(或日期时间、 bool 值等)中。

关于c# - WHERE IN(ID 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/182060/

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