TableAdapter更新失败:不允许空值

时间:2013-02-14 11:58:02

标签: c# tableadapter

我正在尝试使用tableadapter中的更新方法更新表,但是我收到了错误的错误:

  

无法将值NULL插入列'isCorrect',表'info';列不允许空值。更新失败。
  声明已经终止。

但是我确实为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)

如何解决此问题?

修改

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这可能会对您有所帮助:

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

如果它解决了这个问题,请告诉我。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我在ID列中遇到此问题。 我通过使用IDENTITY(1,1)

创建此ID列来解决问题

Maby设置不同,但它可以帮助其他ID列问题相同的人。