有两个数据库A,B。A.a表中有个opertime字段,记下每次操作的时间。
timer每分钟触发一次,检查A.a表中的记录更新时间,跟本地保存的上一次的更新时间进行比较,如果不相同,就把A.a表中所有更新的记录读出来,并对B.b表中相应的记录进行修改。
现在的问题是:A.a表中所有更新的记录放在一个DataSet中,我没办法从B.b表中一下子取到DataSet中对应的记录,可是我又不想一条记录一条记录地去更新B.b表,有好的办法吗?

解决方案 »

  1.   

    A表和B表是一一对应的关系吗?如果是,你可以将A表和B表组成一个视图AB,然后在dataSet中对视图进行操作就可以更新到各个表中去了。视图AB中必须包括AB两个表中的主键。
      

  2.   

    你的A表和B表难道没有建立关系吗??设置关系后,把你需要更新的字段设置为级联更新..然后用联合查询更新已经变更的记录.建立一个试图:
    SELECT dbo.a2.id AS a2_ID, dbo.a2.a1ID AS a2_a1ID, dbo.a2.name AS a2_name, 
          dbo.a1.id AS id, dbo.a1.name AS name
    FROM dbo.a2 INNER JOIN
          dbo.a1 ON dbo.a2.a1ID = dbo.a1.id然后对这个试图:update view1 set [name]='sssss' where id=1
      

  3.   

    A表和B表在两个数据库里,这是一个接口,A表是别人的数据库里的表,B表是我们自己数据库里对应的表。B表只取了A表中的部分字段,并且自己加了一些字段。但A表中的ID和B表中的ID是对应的。A表中的记录更新的时候B表中ID相同的记录要做相应的处理。
      

  4.   

    我现在的处理方式是select * from a where opertime = @ModifyTime,这样把A表中更新的数据都放到一个DataSet中。
    然后更新B表的时候,因为select * from B where ID = @ID,所以我只能对上面DataSet中的数据一条条地来更新B表中的数据,大家有没有什么好一点的办法,能从B表中一下子把DataSet中对应的记录取出来,这样我就可以批量更新了~~~
      

  5.   

    I 服了 you,你可以在你们自己的数据库中建立一张A表,然后再用视图或者联合查询,将两个表联接在一起不就行了吗?select * from a where opertime = @ModifyTime,这样把A表中更新的数据都放到一个DataSet中。将该数据更新到你们自己的数据库中的A表里,然后select A.col1 ,A.col2,A.col3.... ,B.col1 ,B.col2 ,B.col3...
    from B inner join A on A.ID=B.ID;建立这个dataSet;或是直接建立一个在数据库里建立一个这样的视图;
    如果使用的是DataSet,你可以用循环取访问DataSet,将B中的Col 都等于A中Col。
    如果使用视图;那就更简单了;
    Update 视图名称 Set B.col1=A.col1 .....应该说这样虽然多了一次将别人A表复制到自己数据库中的步骤,但效率应该还是比一条条去更新B表要快。