2013-02-14 56 views
0

我想更新表,采用更新方法从我的TableAdapter,但我正在逐渐休耕错误:TableAdapter的更新失败:不允许为空

Cannot insert the value NULL into column 'isCorrect', table 'info'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

但是我没有设置AllowDBNull属性为isCorrect列为True。

更新无关与isCorrect在这种情况下,因为该字段的原始值不会发生任何变化(意为大多数情况下,我只是想更新起始日期和结束日期;只有一个情况下,我需要以更新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();

+0

请显示您执行的代码。 – 2013-02-14 12:00:06

回答

0

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

0

这可能会帮助您:

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

让我知道它是否能解决这个问题。

0

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

0

我有一个ID列的这个问题。 我通过创建此ID列解决ist:IDENTITY(1,1)

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