当传递具有已修改行的DataRow 集合时,更新要求有效的UpdateCommand
(2010-10-23 21:06:59)
标签:
更新要求有效的updatecommand主键primarykeysqlit |
分类: .NET技术 |
“当传递具有已修改行的DataRow 集合时,更新要求有效的UpdateCommand”解决办法
在Visual Studio开发数据库时,有时会有上边的消息出现,这个问题的解决办法,最有可能的是下面的情况:
SQL语句制作出来的查询或者是视图,字段中没有包含要更新(添加、删除和修改)物理表的主键,把主键字段包括进去,问题应该解决了。
原理:不含主键字段,执行Select语句没有任何问题,但数据库无法执行Insert、Update和Delete语句,无论是Windows应用程序开发还是Web开发,都是如此。所以,如果要对显示出来的数据进行修改并更新数据库,一定记住把主键(Primary Key)带上!
举例:比如一个表Users,内有4个字段:UserId(PK)、UserName、Title、Age
如果用下边的语句:
SELECT UserName,Title,Age FROM Users;
将其绑定到DataGridView控件上(对Windows应用程序窗体),显示出来没有问题,但使用导航栏的“保存数据”按钮,就会弹出来:“当传递具有已修改行的DataRow 集合时,更新要求有效的UpdateCommand”。
将上述语句改为:
SELECT * FROM Users;
再运行,就没有问题。因为里边含有UserId这个主键了。