gpt4 book ai didi

c# - 多列插入中的默认命令参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:01 24 4
gpt4 key购买 nike

我要在列数非常多的表上进行一系列插入操作,例如:

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);

或者构建实际使用的列并将它们连接在一起(和使用的参数),然后设置使用的参数的正确解决方案?

我倾向于回避查询的串联解决方案,以避免潜在的注入(inject)攻击。

最佳答案

这是将每个参数设置为 null 的更简洁/更清晰的方法:

foreach (var param in new[] { "@a", "@b", ... })
cmd.Parameters.AddWithValue(param, DBNull.Value);

我也倾向于回避连接解决方​​案,但如果您的列在数据库中定义了默认值,那可能会有所不同,如果您在 insert 中明确将它们设置为 null,默认值会(?)被覆盖 语句。

关于c# - 多列插入中的默认命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com