我有这个DataGridView和一个BindingNavigator .. 每当我添加一个新条目时,它都会返回一个错误: 'column'newsID'不允许空值。'
但在我的MySQL数据库中,newsID列设置为AutoIncrement。 我该如何解决这个问题?
谢谢!
这是我的代码:
Public Class FormNews
Private Sub FormNews_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'UCWebDataSet.news' table. You can move, or remove it, as needed.
Me.NewsTableAdapter.Fill(Me.UCWebDataSet.news)
End Sub
Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click
Me.Validate()
Me.NewsBindingSource.EndEdit()
Me.NewsTableAdapter.Update(Me.UCWebDataSet)
End Sub
End Class
答案 0 :(得分:0)
您使用的是linq还是数据集?
如果是这样,您是否使用设计器来创建数据集?您需要做的是指定要插入的查询以返回生成的ID输出。
此链接可帮助您更新数据适配器以解决此问题:
如果你使用linq道歉,我的回答是无关紧要的。
编辑:刚刚意识到你正在使用MySql。你需要做一些不同的事情来获得自动增量值,我不记得mysql是否与设计师合作......
答案 1 :(得分:0)
问题是添加新记录时您不知道数据库使用的自动增量值。我对基础SQL Server 2005数据库有同样的问题。
但是,必须有一些配置类型化数据集的方法(我想在该字段的属性中),因为当我在另一个项目上尝试它时,所有突然的新记录自动编号为-1, - 2,等ID。插入数据库后,获得了实际值,并替换了临时值。
然而,这可能仅适用于我在其他项目中使用LINQ to SQL ...
您可能会尝试用虚拟值填充它(例如负滴答计数等),然后在插入数据库后自己设置/检索“真实”ID。