我正在尝试使用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();
答案 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列问题相同的人。