先谈谈我自己对database和ADO控件待认知。
  我是实践派,所以讲的是些实际问题。
  (1)用database连接数据库,在用DBgrid做show的动作时候,你实现不了隔行变颜色的功能,而用ADOquery则可以。(即主要是因为adoquery.RecNO是可用的,而dataAcess中query。recno一直是-1,当然或许有高人能用database和query实现这个功能,这我就不知道了)。
  (2)用ADOquery查询还有一个BUG:如果上次查询返回结果为0条记录,你再次点击Button进行查询会出现一个游标的相关错误。   以上是举2个例子,下面说说我的新困惑,希望有人能给个专业点的解答,不胜感激。
      为什么同样查询一个表(数据有点多)。用DATABASE连数据库,DBgrid反应蛮快,而用ADOconnection连数据库,程序竟然假死。
   开始我以为是程序有问题,于是换了个数据较少的表,结果:二者都正确SHOW出数据。
   ADOconnection连数据库咋会这样?困惑。。
   难倒是ADOconnection中的那个CACHESIZE要调一下?(试过,貌似没用)还是什么原因?
  

解决方案 »

  1.   

    c/s程序?
    一下子用table控件打开一个大表,是比较慢的,一般也没必要
      

  2.   

    绝对建议用ADOquery。因为方法灵活。(2)用ADOquery查询还有一个BUG:如果上次查询返回结果为0条记录,你再次点击Button进行查询会出现一个游标的相关错误。
      原因是你没有关闭数据集,然后又打开。重新查询前,记得将ADOquery.close;为什么同样查询一个表(数据有点多),请问数据到底有多少行记录?数据显示慢,还与使用的数据库有关,DATABASE是预先导入数据,所以显示快。
      

  3.   

    (1)原因是你没有关闭数据集,然后又打开。重新查询前,记得将ADOquery.close;
    button中的代码是这样的,
    with  ADOquery do
    begin
      close;
      sql.clear;
      sql.add('SQL');
      open;
    end;
    所以不存在没断开的情况,因为每次都有先CLOSE。为什么同样查询一个表(数据有点多),请问数据到底有多少行记录?
    ------------------------------------------------------------
    有点多的意思就是至少上万了,呵呵。
    数据显示慢,还与使用的数据库有关,DATABASE是预先导入数据,所以显示快。
    ----------------------------------------------------------------
    这点倒是学到了点东西。谢谢。
      

  4.   

    ADOquery打开上万条记录close,open就有点慢了。