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)
显然这有一些长度限制(我发现你的帖子正在寻找替代解决方案),但这可能适合你.
参数不适用于IN.我总是在查询本身中嵌入诸如字符串之类的东西.虽然这通常被认为是错误的形式,因为SQL注入,如果您从强类型数字列表构建查询,那么任何外部输入都不应该以有意义的方式破坏它.
归档时间: |
|
查看次数: |
13530 次 |
最近记录: |