日期:2014-05-20  浏览次数:20845 次

菜鸟提问,关于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收场...

可能有更好的方法,只不过我还没见过..