我只是在这里仔细检查一下,我相信其他人偶尔会有这个问题:
当不涉及用户输入时,是否有任何理由使用参数化查询?例如,将随机字符串放入 SQL 表时。
为了安全起见,是的。即使您确定当前值现在绝对安全,您是否可以肯定地保证将来没有其他人会进行更改或将相同的查询用于不同的目的?
如果没有其他原因,我喜欢代码的干净程度。有几个查询理论上可以在没有参数化的情况下安全运行,但是构建字符串要丑得多,而且在需要维护时很难理解丑陋的代码。
例如,在 C# 中(本例中为 PL/SQL 查询)
String query = @"SELECT thing, stuff
FROM table_of_things
WHERE thing = :thing
OR stuff = :stuff";