如何在向数据表添加新行之前使所有列都允许为空。
dt.Rows.Add(dt.NewRow());
此行抛出异常
列XXX不允许空值
如何解决此问题。
答案 0 :(得分:5)
在填充并准备好保存之前,不要添加该行。
DataRow row = dt.NewRow();
...用值填充行...
dt.Rows.Add(row);
答案 1 :(得分:1)
通常,数据库设计者指定由于某种原因列不能为空。例如,它可能是主键或外键,或者是必需的信息。
如果您确定没有为此特定记录提供此列的数据,请尝试传递空字符串。
答案 2 :(得分:1)
通常最好先将内存中的整行初始化,然后再将其发送到数据库(而不是在已经存在的情况下逐字段填写)。
但是,如果您绝对必须这样做,并且如果您的DBMS支持它,您可以将NOT NULL约束声明为延迟,因此它们不会被检查,直到交易提交。这是一个Oracle example。
答案 3 :(得分:1)
这很少是好的解决方案。从重新设计数据库开始。
考虑从所有不必要的字段中删除NOT NULL约束。
此外,如果任何字段是强制性的,但您仍然不想在创建行期间填写它,请在数据库或中间层(ORM或其他)中设置默认值
修改强> 但是,在这种情况下,在使用数据初始化之前,您似乎只是尝试将空行传递给db。那将永远不会奏效; - )