问题描述:为查询出在苏州分公司生产所用到的MAC号有多少与台湾总公司生产所用到的MAC号重复,我需要分别连接两地的DB进行查询,并在DataGridView中显示出来。我希望实现的效果类似于:“select mac from TableA(台湾数据库) where mac in (select mac form TableB(苏州数据库) where wo_no='XXX')”。请各位帮忙看看如何才能实现这种效果(C#解决),急切等待中...!问题解决立即结贴! 

解决方案 »

  1.   

    用这个连接连接两个数据库
    给另一个数据库加一个别名server2用这个存储过程
    sp_addlinkedserverselect a.mac
      from db1.dbo.tableA as a
     inner join server2.db2.dbo.tableB as b
       on a.mac = b.mac
      

  2.   

    没有这样搞过,楼主可以将select mac form TableB(苏州数据库) where wo_no='XXX'先查出来作为一个结果集,
    然后再查
      

  3.   

    如果要连接远程数据库,通过remoting 或web services获取数据,实现数据传输。再与本地数据实现比较。
    本地就可使用select mac from TableA where mac in (select mac form TableB where wo_no='XXX')
      

  4.   

    先将两个数据取回到datatable中,然后用linq可解决。
      

  5.   


    DataTable 苏州公司t1;
    DataTable 台湾公司t2;
    //分别为两个datatable取资料
    ....//比较
    var query = from lt1 in 苏州公司t1.AsEnumerable()
                from lt2 in 台湾公司t2.AsEnumerable()
                where lt1["mac"].Equals(lt2["mac"])
                select lt1;
     
      

  6.   

    多谢大家提供的方法,等会我试一下。
    另外希望大家能提供一个最简单实用,效率又高的方法。(希望能有相关Source Code借鉴)
    因为我这边查询会比较频繁,所以查询的速度是比较重要的一个考虑方面。
      

  7.   

    从安全方面考虑,楼主的做法肯定有问题.
    webservice比较好
      

  8.   

    我觉得必须考虑2方面问题:安全,效率
    1 安全: 用VPN
    2 效率: 
       方法1 :把台湾数据库发布到苏州数据库的某个表,然后再做查询,那查询谁都会写!
               至于发布,MSSQL的【复制】发布及订阅功能
       方法2: 写个JOB间隔地把台湾数据库拷贝到苏州数据库的某个表,然后再做查询。
       方法3: 写程序从台湾数据库查询记录导入到某个表,然后再做查询。   以上方法的前提是VPN!