菜鸟提问,关于Dataset,多表关联更新和显示
数据库2个表:
用户表:用户名称、用户密码、部门ID
部门表:部门ID、部门名称
比如我用SQL语句
select 用户表.用户名称,用户表.用户密码,用户表.部门ID,部门表.部门名称
from 用户表,部门表
where 用户表.部门ID = 部门表.部门ID
用DataAdapter去填充DataSet绑定到DataGrid上
当DataSet数据发生变化时,是不是只能自己写SQL语句去更新数据库,还是可以用DataAdapter.update去更新,其实我就是想更新“用户表”里的数据,把部门表里的信息显示出来是为了方便用户查看,总不能把部门ID显示给用户,用户就不知所谓了。
我测试了好多次好象一个表的时候可以用DataAdapter.update,但是关联到多个表时就不能这样更新了。
我看到VS2005里面多了个TableAdapter很好用,但是他只能最一个表自动生成更新、删除的语句,如用我上面的SQL语句的话,他更新、删除的语句就生成不了了。但是在我的项目里面不可能都是一个表的,多表关联是个很正常的事情,现在不知道怎么解决,郁闷,难道这个是个鸡肋?大量的代码最终还是要自己去完成吗?
请大虾赐教好点的解决方法。
------解决方案--------------------帮你up一下
------解决方案--------------------等正解
------解决方案--------------------关联表不能用DataAdapter.update来更新吧。除了自己写sql语句外,关注有没有好的解决方法
------解决方案--------------------TO:我测试了好多次好象一个表的时候可以用DataAdapter.update,但是关联到多个表时就不能这样更新了。
多个表的情况不能用DataAdapter.update..
你之所以能用DataAdapter.update,是因为你用了CommandBuilder...
而用CommandBuilder的限制条件之一就是要求只是对单表进行操作..
终上所述,对于多表,用不了DataAdapter.Update...
自己写SQl搞定吧..
------解决方案--------------------设置主键就行了,多表更新一样可以用DataAdapter.Update
------解决方案--------------------我個人給一個方法,像單頭表單身表類的主表和詳細表
單頭表用textbox,combox等之類的控件,采用綁定,綁定單頭表,由級聯Id(外鍵)關聯到單身表,帶出自己想要的數據,然後綁定到單身表,再采用dataadaper.update
這樣就不會出現問題!
------解决方案--------------------還有一種方法就是用datarelation對象
dim datarelationda as datarelation
.....
dataset1.relations.add(datarelationds)
------解决方案--------------------select 用户表.用户名称,用户表.用户密码,用户表.部门ID,部门表.部门名称
from 用户表,部门表
where 用户表.部门ID = 部门表.部门ID
将这个改成:
select 用户名称,用户密码,部门ID,(select 部门名称 from 部门表 where 部门ID = a.部门ID)as 部门名称 from 用户表 a
这样就边成单表了
------解决方案--------------------自打我来CSDN,类似的问题见过很多...
涉及到多表的情况,最终均以自己拼Sql收场...
可能有更好的方法,只不过我还没见过..