怎样的SqlParameter传递给IN()? [英] How to pass sqlparameter to IN()?

查看:804
本文介绍了怎样的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,@ U​​serId3,...)
 

所以,你需要创建参数在条款的的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆