怎样的SqlParameter传递给IN()? [英] How to pass sqlparameter to IN()?
本文介绍了怎样的SqlParameter传递给IN()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于某种原因的SqlParameter为我()子句不工作。在code编译好,和查询工作,如果我替换参数值与实际值
StringBuilder的SB =新的StringBuilder();
的foreach(在UserList的用户的用户)
{
sb.Append(user.UserId +,);
}
字符串的用户id = sb.ToString();
用户id = userIds.TrimEnd(新的char [] {','});
SELECT用户ID的用户名
来自用户的
其中userid IN(@UserIds)
解决方案
您必须对您要在在
子句中的每个值创建一个参数。
在SQL需要是这样的:
SELECT用户ID的用户名
来自用户的
其中userid IN(@ UserId1,@ UserId2,@ UserId3,...)
所以,你需要创建参数和的在
在条款的的foreach
循环。
像这样的东西(从我的头,未测试):
StringBuilder的SB =新的StringBuilder();
INT I = 1;
的foreach(在UserList的用户的用户)
{
// IN子句
sb.Append(@用户ID+ i.ToString()+,);
// 参数
YourCommand.Parameters.AddWithValue(@用户ID+ i.ToString(),user.UserId);
我++;
}
For some reason the Sqlparameter for my IN() clause is not working. The code compiles fine, and the query works if I substitute the parameter with the actual values
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)
解决方案
You have to create one parameter for each value that you want in the IN
clause.
The SQL needs to look like this:
SELECT userId, username
FROM Users
WHERE userId IN (@UserId1, @UserId2, @UserId3, ...)
So you need to create the parameters and the IN
clause in the foreach
loop.
Something like this (out of my head, untested):
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()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文