由于某种原因,我的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子句中所需的每个值创建一个参数。
IN
SQL需要看起来像这样:
SELECT userId, username FROM Users WHERE userId IN (@UserId1, @UserId2, @UserId3, ...)
所以,你需要创建的参数 ,并 在IN在第foreach循环。 这样的事情(在我脑海中,未经测试):
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++; }