在使用MIDAS的三层结构中,客户端从服务器返回数据时记录数有限制(最大1000),如果查询结果集记录数太大,必须分步来取得数据;那能不能像文件的多线程下载一样,把服务器断执行查询所获得的结果集分块,使用多线程下载到客户端,然后再重新组装?
  

解决方案 »

  1.   

    可以考虑用这种查询,分批得到纪录集。这样就可以多个线程里面同时取得多个记录集了
    n代表你一次想取多少了,按你说的应该1000。m代表这是取第几批,就是你想取第几个1000。开多个线程传不同的n m过去就可以了        select top n * 
            from DBTABLE 
            where SELECT_KEY = 'key'
            and DBTABLE_ID not in (
                                   select top n*m DBTABLE_ID
                                   from DBTABLE
                                   where SELECT_KEY = 'key'
                                   order by DBTABLE_ID)
            order by DBTABLE_ID
      

  2.   

    用xml作为传输的媒介,便于分解与合并
      

  3.   

    如果多线程的话,
    和bluesmile979(笑着)说的应该差不多,
    应该注意那些问题,因为没做过,不好说,
    我想主要是多线程的协调以及分解组装数据吧
    但是觉得没有必要,且存在一定的隐患
    因为如果数据很多的话,用户也不可能一下子看完,
    这样一次性全取过来,等到用户看到后面的数据时,
    可能此时的数据已经被修改了
    还不如采用批量查询的方式,
    最起码可以保证每次取到的数据是最新的
      

  4.   

    sure, add a param, the page of you recordset.like thisGetResult(xxx: xxxx; tpage: integer);