如何参数化包含IN具有可变数量参数的子句的查询,比如这个?
SELECT * FROM Tags
WHERE Name IN ('ruby','rails','scruffy','rubyonrails')
ORDER BY Count DESC
Run Code Online (Sandbox Code Playgroud)
在此查询中,参数的数量可以是1到5之间的任何值.
我不希望为此(或XML)使用专用存储过程,但如果有一些特定于SQL Server 2008的优雅方式,我对此持开放态度.
我有关于.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连接器团队应该更努力地工作.
运行我的字符串以确保MySQL注入不可能的最佳功能是什么?
此外,它是否需要在出路时通过另一个功能运行它才能使其正确显示?
参数真的足以阻止Sql注入吗?
C#参数化查询MySQL withinclause
我可以通过使用单引号转义单引号和周围用户输入来防止SQL注入吗?