我习惯在遍历查询结果时总是调用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/