0

我正在尝试使用 tableadapter 中的 update 方法更新表,但出现以下错误:

无法将值 NULL 插入列“isCorrect”、表“信息”;列不允许空值。更新失败。
该语句已终止。

但是,我确实将AllowDBNullisCorrect 列的属性设置为 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)

我该如何解决这个问题?

编辑

为此,我使用了调度程序控件,但对于更新,我调用了这些函数:testsTableAdapter.Update(testsDataSet);
this.testsDataSet.AcceptChanges();

4

4 回答 4

0

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

于 2013-02-14T12:33:07.203 回答
0

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

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

于 2013-10-10T09:09:01.580 回答
0

检查信息表(数据库)的设计并验证您是否已选中“isCorrect”列的复选框以允许 Nulls。

于 2013-02-14T12:07:55.043 回答
0

这可能会帮助您:

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

让我知道它是否以这种方式解决。

于 2013-02-14T12:09:12.623 回答