将List <int>添加到mysql参数

Pho*_*_uy 18 .net c# mysql mysql-connector mysql-parameter

我有关于.NET连接器的MySqlParameter的这个问题.

我有这个问题:

SELECT * FROM table WHERE id IN (@parameter)
Run Code Online (Sandbox Code Playgroud)

而MySqlParameter是:

intArray = new List<int>(){1,2,3,4};

...connection.Command.Parameters.AddWithValue("parameter", intArray);
Run Code Online (Sandbox Code Playgroud)

这个有可能?是否可以将int数组传递给单个MySqlParameter?另一个解决方案是将int数组转换为类似"1,2,3,4"的字符串,但是当我将它传递给MySqlParameter并将其识别为字符串时,它会像sql查询一样放入"1 \,2 \,3 \,4",这不会返回预期值.

@ UPDATE:似乎mysql连接器团队应该更努力地工作.

Mud*_*Mud 15

当我将它传递给MySqlParameter并且这被识别为字符串时,它会在sql查询中输入"1 \,2 \,3 \,4",这不会返回预期的值.

我昨晚碰到了这个.我发现FIND_IN_SET在这里工作:

SELECT * FROM table WHERE FIND_IN_SET(id, @parameter) != 0
...
intArray = new List<int>(){1,2,3,4};
conn.Command.Parameters.AddWithValue("parameter", string.Join(",", intArray));
Run Code Online (Sandbox Code Playgroud)

显然这有一些长度限制(我发现你的帖子正在寻找替代解决方案),但这可能适合你.


Jam*_*rgy 5

参数不适用于IN.我总是在查询本身中嵌入诸如字符串之类的东西.虽然这通常被认为是错误的形式,因为SQL注入,如果您从强类型数字列表构建查询,那么任何外部输入都不应该以有意义的方式破坏它.

  • 我知道,我说它不可能按照你想要的方式去做. (3认同)