ADO DataSet使用EOF还是IsEmpty?

Dar*_*ler 3 delphi ado

我访问存储过程数据集(MS SQL Server,仅向前,只读)的大部分代码是多年前我的Clipper编码的后备

在今天的代码审查中,我注意到在类似的代码块中引用了IsEmpty.这仅仅是一个偏好还是在示例场景中是否有任何真正的区别?

MyStoredProc.Open;
if not MyStoredProc.IsEmpty then
begin
  DoSomething;
end;
Run Code Online (Sandbox Code Playgroud)

我经常使用的地方

MyStoredProc.Open;
if not MyStoredProc.Eof then
begin
  DoSomething;
end;
Run Code Online (Sandbox Code Playgroud)

主要是因为它反映了我在while循环中使用的实践,当它是多个记录时:

MyStoredProc.Open;
while not MyStoredProc.Eof then
begin
  DoSomething;
  MyStoredProc.Next;
end;
Run Code Online (Sandbox Code Playgroud)

RRU*_*RUZ 5

的IsEmpty属性是检查,如果数据集有记录,EOF是检查如果当前记录是最后一个.在您的情况下,如果您需要迭代数据集,请使用eof确定您是否到达最后一条记录.

  • `IsEmpty`是首选,因为这是此属性的目标(测试数据集是否有记录)并保持代码更干净,因为更清楚写`如果不是Dataset.IsEmpty则doSomething;`而不是`If not Dataset. Eof然后doSomething;` (4认同)