日期:2014-05-19  浏览次数:20701 次

~~~SqlCommandBuilder更新视图(Not DataView But SQL SERVER)所遇到的问题!UP有分!
在我的程序(WINFORM)中,我的显示层有一个dataGrid,他的数据源来自我通过SqlDataAdapter的Fill,sql语句是查询一个视图,select   *   from   View_Myself,对应于这个视图我建立了他的instead   of   update   触发器,并且直接在查询分析器里执行对视图的更新能够触发对基表的更新,然后我在显示层修改数据,逻辑层通过SqlCommandBuilder.Update(dt)来更新,这里的dt也就是前面通过查询视图所封装的结果集.却不能做到真正更新数据库的数据.

1.我想问的是,在很多帖子上看到这么一个错误:对视图或函数   '%'的更新或插入失败,因其包含有派生域或常量域.而我却能够通过查询分析器执行?
2.通过我自己的程序来更新,也就是在前台修改dataGrid里的数据,为什么不能真正修改到数据库的数据?

在线等~~!

------解决方案--------------------
帮你顶
------解决方案--------------------
U..U..UP
------解决方案--------------------
视图中派生的列是不可能被更新的

比如表订单,有字段 编号,数量,单价 我可以根据 数量*单价 得到一个派生列 总价

也就是视图可以是 编号,数量,单价,总价

那么,你对视图中总价(这个就是派生列)的字段就算进行的更改,数据库的表里没有这个字段,是不可能发生什么改变的
------解决方案--------------------
up up 抬个头……
------解决方案--------------------
可以通过查询分析器执行成功,那么说明你的变量传递过程当中有问题,或是你的SqlCommandBuilder的参数设定有问题
另外你试着在你SqlCommandBuilder.Update(dt)这句设一个断点,检查一下dt这时的数据是否是你更改后的数据,与原始数据是否一致,dt的RowState是否是更新状态,不要告诉我你不会断点调试

------解决方案--------------------
不懂,学习,帮顶,蹭点分。