我习惯在遍历查询结果时总是调用First()

Qry.Open;
Qry.First;
while not Qry.Eof do
begin
    //do something
    Qry.Next;
end;


是否有原因First()Open()之后没有自动调用?

或以另一种方式问:我们使用某种数据库访问抽象类。将对First()的调用包含到我们的Open()例程中是一个好主意吗?

最佳答案

您将看到一个完美的示例,说明为什么绝对需要First的原因:由于您在迭代后没有关闭数据集,因此对该代码序列的新调用将不会真正打开数据集。它仍然是打开的,对Open的调用无提示执行任何操作。因此,需要First才能使迭代生效。

严格来说,可以归结为希拉里奥(Hilario)所说的:迭代之前需要First

关于delphi - 是否应该在查询/TDataset的“打开”之后始终调用“第一”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37788392/

10-14 10:10