2010-01-18 39 views
0

我有这个DataGridView和一个BindingNavigator .. 每当我添加一个新条目时,它会返回一个错误: 'Column'newsID'不允许为空。VB.NET 2008中的BindingNavigator

但在我的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

显示您正在使用的语句,也许我们可以提供帮助。 – Younes 2010-01-18 08:14:28

回答

0

你使用LINQ或数据集?

如果是这样,您使用设计器来创建数据集?您需要做的是指定要插入的查询以返回生成的ID输出。

此链接应帮助您更新dataadapters来解决这个问题:

MSDN Forum Post

道歉,如果你正在使用LINQ,我的答案是不相关的。

编辑:刚才意识到你正在使用MySql。您将需要做一些不同的事情来获得自动增量值,并且我不记得mysql是否与设计人员一起工作...

0

问题是数据库使用的自动递增值在您不知道添加新记录。我有一个底层SQL Server 2005数据库的问题。

但是,必须有某种方式来配置类型化数据集(我假设在字段的属性中),因为当我在另一个项目上尝试它时,所有突然的新记录(其中自动编号为-1) -2等ID。

一旦插入到数据库中,就会获得实际值并替换临时值。

这可能,但是,只有适用,因为我使用LINQ在其他项目到SQL ...

您可以尝试使用虚拟值来填充它(如负滴答计数或东西),然后设置/在插入数据库后自己检索“真实”ID。