如何解决当传递带有已修改行的DataRow集合时,Visual Studio VB更新需要有效的UpdateCommand
我有按钮更新和代码
Private Sub txtSave_Click(sender As Object,e As EventArgs) Handles txtSave.Click
Me.Validate()
Me.TrackingBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.InventoryDataSet)
MsgBox("Record Update")
End Sub
运行时出现错误
System.InvalidOperationException: 'Update requires a valid UpdateCommand when passed DataRow collection with modified rows.'
不确定我是否会错过一些更新记录。谢谢
解决方法
从数据库创建类型为DataSet
的向导将为每个数据库表生成一个DataTable
和一个表适配器。 DataTable
模式基于表模式,表适配器命令中的SQL也基于表模式。
SelectCommand
包含一条SELECT
语句,该语句将检索所有行的所有列,并在您调用Fill
时执行。 InsertCommand
,UpdateCommand
和DeleteCommand
分别包含INSERT
,UPDATE
和DELETE
语句,并在您调用{{1}时按要求执行}。
Update
和SelectCommand
始终可以生成,因为它们只需要知道每一列的名称和数据类型即可。 InsertCommand
和UPDATE
语句需要能够标识要更新或删除的特定记录,并且它们可以通过在DELETE
子句中指定主键值来实现。如果您的数据库表没有主键,则无法生成SQL,并且表适配器将没有WHERE
或UpdateCommand
。
您需要做的是确保所有数据库表都具有主键。拥有不带PK的表可能是有效的,但这非常少见。表具有PK后,可以重新运行“数据源”向导来更新键入的DeleteCommand
。在“数据源”窗口的工具栏上有一个按钮可以做到这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。