我有个没与数据库关联的datatable(gridview中输入的数据),里面有个单据号的字段;oralce数据库中有另一个表存放了这些单据号的订单信息.我想将这些信息检索出来体现在gridview 中.
现有的办法,我只能是遍历datatable中的每行,一个个地进入数据库检索;
还可能有办法,就是把这些单号写入到oracle的临时表,再检索,但也好像比较麻烦.不知可不可以将内存中datatable与数据库中的表关联查询,一次性得出一个结果集?

解决方案 »

  1.   

    如果datatable的数据不多,就先等用户响应后再查询
    否则即使你在oralce建立临时表,速度还是慢
    不如另开一个线程,将关联数据写在内存里。不过这样对机器配置要求高,还会造成无用功。
      

  2.   

    用LINQ to Dataset可能行.
      

  3.   

    嗯 不需要一个一个的查询吧, 试试 select * from table where id in( 1,2,3) 这种语法. 一个查询就可以出来了.
      

  4.   

    我是要拿这些单号与数据库left join连接,因为可能有些单号在数据库中无记录,但也要体现在表格中,
    所以select * from table where id in( 1,2,3)这样的方式不行.
      

  5.   

    简单
    select * from table t1 left join (select 单号 from 单号表 where 单号 in (1,2,3,4))t2 ON t1.单号=t2.单号
      

  6.   

    j_seaman ,"select * from table t1 left join (select 单号 from 单号表 where 单号 in (1,2,3,4))t2 ON t1.单号=t2.单号"
    前提要把我的这些要查的单号录入一个t1表,事实上我还没有录入到数据库中,只是内存中的一个datatable存放.现在我自己已经解决好了,受warrior 启发看了些 linq to dataset的资料.
    没有与数据库关联的datatable\dataset,是没有关联查询的功能,好多网页上这么说.只能编程实现关联匹配.
    我是先一次性查出数据库中存在的单号的信息,如" select 单号,sum(numbers) as 数量,... from 单号表 where 单号 in (1,2,3,4)";转到一个内存中的datatable;然后 再去与原来存放单号的datatable一个个匹配;因为只用到查询数据库一次,所以速度飞快.原来要一分钟多钟的一次查询现在只要两三秒.谢谢各位!