使用SqlDataAdapter从DataGridView更新

我有一个DataGridView显示SQL Server数据库中的数据。它允许用户编辑数据并将其保存回数据库。 数据保存回数据库的方式如下:
Dim da As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(da)

da.SelectCommand = New SqlCommand(sql, conn)

da.InsertCommand = cmdBuilder.GetInsertCommand

da.UpdateCommand = cmdBuilder.GetUpdateCommand

Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
da.Update(dt)
当我保存到普通表时,这很好用。但是,我还想保存到具有INSTEAD OF触发器的视图,该触发器在插入,更新和删除时触发。当我尝试在此视图中使用上述内容时,我收到错误: 对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成。 我怎样才能保存到这个视图?我不想直接保存到基础表,因为我希望触发器触发。 谢谢! 编辑:我也尝试手动生成InsertCommand和UpdateCommand,但得到了相同的错误。 编辑2:事实证明,当我手动生成命令时,我得到了错误的命令。一旦我修复它工作正常 - 我的视图得到更新,触发器按预期触发。我想你不能用SqlCommandBuilder自动生成视图的命令。     
已邀请:
快速谷歌搜索显示,如果您的表没有主键值,可能会出现此问题。您的选择查询必须返回更新查询的该值(在没有主键列的情况下,它不会。) http://social.msdn.microsoft.com/Forums/en-NZ/Vsexpressvcs/thread/5dec5633-ac84-48d9-8fd6-5c7601be4ccd     

要回复问题请先登录注册