数据库2个表: 
用户表:用户名称、用户密码、部门ID
部门表:部门ID、部门名称比如我用SQL语句
select 用户表.用户名称,用户表.用户密码,用户表.部门ID,部门表.部门名称
from 用户表,部门表
where 用户表.部门ID = 部门表.部门ID
用DataAdapter去填充DataSet绑定到DataGrid上当DataSet数据发生变化时,是不是只能自己写SQL语句去更新数据库,还是可以用DataAdapter.update去更新,其实我就是想更新“用户表”里的数据,把部门表里的信息显示出来是为了方便用户查看,总不能把部门ID显示给用户,用户就不知所谓了。我测试了好多次好象一个表的时候可以用DataAdapter.update,但是关联到多个表时就不能这样更新了。我看到VS2005里面多了个TableAdapter很好用,但是他只能最一个表自动生成更新、删除的语句,如用我上面的SQL语句的话,他更新、删除的语句就生成不了了。但是在我的项目里面不可能都是一个表的,多表关联是个很正常的事情,现在不知道怎么解决,郁闷,难道这个是个鸡肋?大量的代码最终还是要自己去完成吗?请大虾赐教好点的解决方法。

解决方案 »

  1.   

    关联表不能用DataAdapter.update来更新吧。除了自己写sql语句外,关注有没有好的解决方法
      

  2.   

    TO:我测试了好多次好象一个表的时候可以用DataAdapter.update,但是关联到多个表时就不能这样更新了。多个表的情况不能用DataAdapter.update..你之所以能用DataAdapter.update,是因为你用了CommandBuilder...而用CommandBuilder的限制条件之一就是要求只是对单表进行操作..终上所述,对于多表,用不了DataAdapter.Update...自己写SQl搞定吧..
      

  3.   

    那不知道MS出的这个 强类型DataSet + TableAdapter不知道何用了,在实际项目中我们总是要把别的表的一些信息一起显示出来给用户。像PB的数据窗口,他就可以选择多个表关联的时候去更新哪几个字段!
      

  4.   

    设置主键就行了,多表更新一样可以用DataAdapter.Update
      

  5.   

    我個人給一個方法,像單頭表單身表類的主表和詳細表
    單頭表用textbox,combox等之類的控件,采用綁定,綁定單頭表,由級聯Id(外鍵)關聯到單身表,帶出自己想要的數據,然後綁定到單身表,再采用dataadaper.update
    這樣就不會出現問題!
      

  6.   

    DataColumn[] Prk = new DataColumn[1];
                Prk[0] = DS.Tables[0].Columns["line_guid"];
                DS.Tables[0].PrimaryKey = Prk;
               这个ds.talble[0]是多表关联查询出来的
      

  7.   

    還有一種方法就是用datarelation對象
    dim datarelationda as datarelation
    .....
    dataset1.relations.add(datarelationds)
      

  8.   

    select 用户表.用户名称,用户表.用户密码,用户表.部门ID,部门表.部门名称
    from 用户表,部门表
    where 用户表.部门ID = 部门表.部门ID
    将这个改成:
    select 用户名称,用户密码,部门ID,(select 部门名称 from 部门表 where 部门ID = a.部门ID)as 部门名称 from 用户表 a这样就边成单表了
      

  9.   

    总觉得,MS的这个东西还不够灵活!还是安分点自己写SQL语句了
      

  10.   

    自打我来CSDN,类似的问题见过很多...涉及到多表的情况,最终均以自己拼Sql收场...可能有更好的方法,只不过我还没见过..