对于select 语句中是两个表连接生成的 datatable ,更新时,如何手写 update语句呢?(即不用sqlcommandbuilder生成)
------------------------------------------
如果select 语句是一个表,可以直接用 sqlcommandbuilder 自动生成更新语句,但是如果是多表连接的话。此时用 sqlcommandbuilder 构造时,会报错,
对于多个基表不支持动态SQL生成
所以我想手动构造 update 语句,但是我不知如何写。我也不知如何能看到自动生成的更新语句是什么样的,所以也写不出个性化的更新语句。我想,对于多表连接生成的datatable,总不能无法更新吧。

解决方案 »

  1.   

    update tab1 set cell1=newvalue1 where 1=1 , update tab2 set cell2= newvalue2 where 1=1这样行不
      

  2.   

    楼上应该不行吧,
    再说一次
    如果  select 语句中只有一个表,完全没有问题可以更新成功,但是如果有两个表,就无法更新,
    原因就是更新语句不能用 sqlcommandbuilder 类来构造,自动构造不出来,提示:对于多个基表不支持动态SQL生成
    所以我想手动构造 更新语句,不知如何构造
      

  3.   

    貌似只能写2条sql语句更新,或者用事务或者存储过程。
      

  4.   

    用update语句直接更新,那我全呀,我要的效果是,用
    select 语句将记录取到datatable中,然后绑定到datagridview中,然后用户编辑 datagridview,
    编辑后,直接更新到后台数据库。
    我的目的并不是用 update 语句来更新,那是纯数据库操作的问题,我的问题是:
    对于 select 语句是使用 join 来联接的情况,如何使用
    sqladapter.update 功能。
      

  5.   

    汗 老实话 有点不懂 你是不是想 同时更新2个表的数据 你可以写个存储过程 里面有N个更新不同表的SQL
    也可以使用触发器。
      

  6.   

    汗 老实话 有点不懂 你是不是想 同时更新2个表的数据 你可以写个存储过程 里面有N个更新不同表的SQL
    也可以使用触发器。
    ---------------------------------
    是我没说明白,不是更新两个表,只是更新一个表。
    但是查询结果是两个表联接生成的。但是我只想更新其中一个表中的字段,另一个表的字段仅供查询。
      

  7.   

    查询和更新是两个概念,操作上查询要考虑的东西肯定没有更新考虑的多。在更新的时候要注意一点那就是更新失败要回滚,即是不能只有一部分更新成功。为了防止这种情况的发生update语句一般是两条,即正对表为单元。在执行更新的时候要添加事务来保证数据更新的完整,否则回滚两个表。
      

  8.   

    “只想更新其中一个表中的字段,另一个表的字段仅供查询。”update语句里set那些需要更新的字段不就好了,操作的是一个表,那么一条语句就OK了吧,不管这个表是几个表的查询结果,就当一个表处理不行吗?
      

  9.   

    你既然都知道只要操作一个表了··直接update不就行了吗???
      

  10.   

    其实我昨天,想用 sqldataadapter.update(表名) 这个功能实现,
    用这个功能的话,能实现自已构造sql语句。我现在可以实现用update语句更新。但是就用不了 sqldataadapter.update()功能了。
      

  11.   

    sqldataadapter.update() 楼主 你纠结在这地方干嘛?
    用别的执行SQL不就得了。