gpt4 book ai didi

delphi - 我可以使用一个命令从一个特定字段获取所有记录吗?

转载 作者:行者123 更新时间:2023-12-03 19:13:06 25 4
gpt4 key购买 nike

我有一个数据库* .mdb。任务是从此数据库的某个字段中获取所有值,并将它们写入文件。
现在代码看起来像这样

while not ADOQuery1.Eof do begin
resultstringlist.add(ADOQuery1.FieldByName('_fieldname_').asString);
ADOQuery1.next;
end;


它可以工作,但是我认为有一个更优化,更快的选择。数据库大小约为40,000条记录,此过程将花费很长时间。我需要使用的数据库包含数十倍的记录和数十个表。
我认为这是一个非常愚蠢的问题,但是我几天后都找不到解决方案。对我而言,数据库是一个未开发的领域。我希望不会太久。

最佳答案

不要在紧缩循环中使用FieldByName,它会在每次调用时对数据集的Fields进行线性搜索。而是在循环之前查找字段,并将结果分配给TField局部变量,然后使用该变量在循环中访问字段值。因此,使用类似

var AField : TField;
...
AField := ADOQuery1.FieldByName('_fieldname_');

ADOQuery1.DisableControls;
try
while not ADOQuery1.Eof do begin
resultstringlist.add(AField.asString);
ADOQuery1.next;
end;
finally
ADOQuery1.EnableControls;
end;


DisableControlsEnableControls的调用避免了通过更新连接到AdoQuery的所有可识别db的gui控件来减慢循环的速度。

您还可能养成了在任何TStrings降序对象上调用 BeginUpdateEndUpdate的习惯,同时在紧密循环中对其进行更新。

关于delphi - 我可以使用一个命令从一个特定字段获取所有记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49698276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com