可能重复:
参数化 SQL IN 子句?
我时不时地在一个允许用户选择多个项目然后对它们执行批量操作的系统上工作。通常,我求助于在运行时构建 SQL,如下所示:
string inClause = String.Join(", ", selectedIds);
string command = "SELECT * FROM Customer WHERE CustomerId IN ({0})";
command = String.Format(command, inClause);
当然,由于 SQL 注入,这种代码风格是不安全的。我可以通过放入参数占位符并创建参数来解决这个问题。
不过,我想知道是否还有另一种我没有考虑过的方法。我当然不想为每个 ID 执行一次命令。