TableAdapter更新失败:dons';不允许null

本文关键字:不允许 null dons 更新 失败 TableAdapter | 更新日期: 2023-09-27 17:59:00

我正试图使用表适配器中的更新方法更新表,但我得到了一个闲置的错误:

无法将值NULL插入列"isCorrect"、表"info"中;列不允许为null。UPDATE失败
语句已终止。

但是,我确实将isCorrect列的AllowDBNull属性设置为True。

在这种情况下,更新与isCorrect无关,因为该字段的原始值根本没有更改(这意味着在大多数情况下,我只想更新startDate和endDate;只有一种情况下,也需要更新isCorrect字段)。我的更新查询如下:

UPDATE info
SET userID = @userID, startDate = @startDate, endDate = @endDate, isCorrect = @isCorrect
WHERE (userID = @Original_userID) AND (startDate = @Original_startDate) AND (endDate = @Original_endDate) AND (isCorrect = @Original_isCorrect)

如何解决此问题?

编辑

为此,我使用Scheduler控件,但对于更新,我调用以下函数:testsTableAdapter.Update(testsDataSet);
this.testsDataSet.AcceptChanges();

TableAdapter更新失败:dons';不允许null

检查info表(数据库)的设计&验证是否已选中"isCorrect"列中的复选框以允许Null。

这可能会对您有所帮助:

DataSet中查找信息DataTable,然后选择isCorrect列。然后按F4并查找NullValue属性并将其设置为Null

如果它能以这种方式解决问题,请告诉我。

您原来的isCorrect不是问题所在,请检查您的新isCorrect值是否为空。您可以在执行tableadapter方法之前插入一个断点,并检查要传递给表适配器的值。因为如果您的表不允许null值,那么当您调用AcceptChange方法时,它会抛出异常。

我在ID列上遇到了这个问题。我通过创建这个ID列来解决问题:IDENTITY(1,1)

可能不是同样的设置,但它可能会帮助其他在ID列方面有同样问题的人。