我有一个显示来自 SQL Server 数据库的数据的 DataGridView。它允许用户编辑数据并将其保存回数据库。
将数据保存回数据库的方式是这样的:
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 为视图自动生成命令。