我有一系列刀片要在表中进行了非常大的列数,例如:默认命令paramters插入
INSERT INTO Table1 (A,B,C,...,Z) VALUES (@a,@b,@c,...,@z)
所有字段(A至Z)可为空。如果您未能明确设置已写入命令文本的命令参数,则无法执行插入操作。
由于列名不是真正顺序的(都有相当随机的名称),有没有简单的方法来循环命令文本中的参数并将它们设置为DBNull.Value
?还是我手动写出来,:
cmd.Parameters.AddWithValue("@a", DBNull.Value);
cmd.Parameters.AddWithValue("@b", DBNull.Value);
cmd.Parameters.AddWithValue("@c", DBNull.Value);
...
cmd.Parameters.AddWithValue("@z", DBNull.Value);
或者是建造一列实际上是在使用和一起将它们连接起来(和使用的参数),然后设置使用的参数正确的解决方案?
我倾向于回避串联解决方案的查询以避免潜在的注入攻击。
我想说如果我只需要设置@a,剩下的就为空:我会继续设置@a。然后执行类似于你的答案的循环,只添加一个检查,只添加参数为null,如果命令的参数列表尚未包含该参数。 – user17753