如何将sqlparameter传递给IN()?

由于某种原因,我的IN()子句的Sqlparameter无法正常工作。代码可以正常编译,如果我用实际值替换参数,查询就可以正常工作

StringBuilder sb = new StringBuilder();

foreach (User user in UserList)

{

sb.Append(user.UserId + ",");

}

string userIds = sb.ToString();

userIds = userIds.TrimEnd(new char[] { ',' });

SELECT userId, username

FROM Users

WHERE userId IN (@UserIds)

回答:

您必须为IN子句中所需的每个值创建一个参数。

SQL需要看起来像这样:

SELECT userId, username 

FROM Users

WHERE userId IN (@UserId1, @UserId2, @UserId3, ...)

所以,你需要创建的参数 在IN在第foreach循环。

这样的事情(在我脑海中,未经测试):

StringBuilder sb = new StringBuilder();

int i = 1;

foreach (User user in UserList)

{

// IN clause

sb.Append("@UserId" + i.ToString() + ",");

// parameter

YourCommand.Parameters.AddWithValue("@UserId" + i.ToString(), user.UserId);

i++;

}

以上是 如何将sqlparameter传递给IN()? 的全部内容, 来源链接: utcz.com/qa/421638.html

回到顶部