代码之家  ›  专栏  ›  技术社区  ›  Pieter van Wyk

Delphi ADO查询

  •  7
  • Pieter van Wyk  · 技术社区  · 16 年前

    有什么方法比其他方法更快地遍历ADO数据集吗

    while (not ADOQuery1.Eof) do
        begin
          /* Do something */
          ADOQuery1.Next;
        end;
    

    6 回复  |  直到 12 年前
        1
  •  7
  •   Linas    16 年前

    对于这样的任务,使用ADORecordset要快得多:

     while not ADOQuery1.Recordset.EOF do
      begin
        ADOQuery1.Recordset.MoveNext;
        // get value
        SomeVar := ADOQuery1.Recordset.Fields['FieldName'].Value;  
      end;
    
        2
  •  10
  •   Germán Estévez -Neftalí-    16 年前

    如果不需要花时间更新数据集上关联的可见控件,请确保使用DisableControls/EnableControls。

    try
      ADOQuery1.DisableControls;
      while (not ADOQuery1.Eof) do
        begin
          /* Do something */
          ADOQuery1.Next;
        end;
    finally
      ADOQuery1.EnableControls;
    end;
    

    当做

        3
  •  8
  •   Mason Wheeler    16 年前

    @彼得,两个选择

    Filter 塔多克利的财产。

    AdoQuery1.close;
    AdoQuery1.filter := 'your condition goes here';
    AdoQuery1.filtered := true;
    AdoQuery1.Open;
    
        4
  •  0
  •   skamradt    16 年前

    在尽可能晚的时候(当所有其他内容都匹配时)避免任何字符串比较,可以获得额外的性能提升。如果数据库中有大量的重复字符串,那么考虑将字符串放置在单独的表中,用整数将其链接回第一个表。

        5
  •  0
  •   mghie    16 年前

    Select whatever fields From whatevertable
    where branchnumber in (
        select branchnumber from whatevertable where branchid=xxz
    )
    

        6
  •  0
  •   user2091150    13 年前

    Delphi ADO的东西( TADOQuery TADOTable TQuery (但由于BDE在大表上的错误,BDE在过去15年里没有更新,所以可能会崩溃),几分钟后通过纯 ODBC 我的建议是:使用任何东西来代替ADO(至少在开发人员认真修改之前)。