我写一程序,就是从数据库,读出数据...
然后根据数据库表里字段提供的路径再把数据COPY 到网络上的主机.
我现在用"Select * from com where time <> : Time"
: Time 取的时间是DateTimePicker1.Date;
把收缩到的数据显示在DBGrid中.当有数据加进来就把这条数据的信息传到主机的目录下.
就这样,渐渐的DBGriD里面的数据信息一天天的越来越多.
最后,任务管理器里的CPU时间 成了 14:09:00 什么的.程序就死掉了.
该放的资源都放了,我怀疑这个DBGrid显示的东西太多.最后刷新这张表的时候就死了...
我想能不能一边读数据,一边删除数据.
这个程序我用了三个TIMER控件...有什么办法能解决数据表显示太多.因为这个程序24小时运转....不可能有人天天就看着它.
小弟最近为这事,身体都搞垮了.......太累了,英文好的话,我也的CODE 生活不至于这么累!!!!!在线等!!!!!!!

解决方案 »

  1.   

    或许楼主可以用临时表来做!
    select * into t_com from com where time <> :Time
    只是每次操作前得drop table t_com
      

  2.   

    同意bmwyc(汗血宝马)用临时表的想法。
    但考虑改变方法。
    别建一表COM_Temp,结构同COM。
    每次有新信息来的时候同时存在COM和COM_Temp中,
    然后向主机传的时候只读取COM_Temp中的数据,读完就删除。尽可能少的保留COM_Temp中的数据,
    这样可以吗?
      

  3.   

    我觉得你更应该从数据库的结构上去考虑:
    从你的查询语句来看,Select * from com where time <> : Time,这一句返回的结果集太大,可能占了整个数据库的绝大部分,与其这样,倒不如设计数据库使得Select * from com where time = : Time这条语句实现你的功能。这样也符合数据库的设计规范。
      

  4.   

    同意 pinyu(品雨) 的意见,但我认为时间是相后走的,超过某一时间的数据列出来
    Select * from com where time > : Time
      

  5.   

    是啊,用time <> : Time肯定不行,> ,<,= 那个都比他强
      

  6.   

    不是DBGrid显示的东西太多,而是缓冲不够用,CPU无法分配时间片段,导至同步线程死锁.....
    建议:
       建立一个临时数据表作为数据缓冲区
      

  7.   

    晕啊!你不会select * from com where time=(select max(time) from come)