ADO DataSet使用EOF还是IsEmpty?

时间:2012-06-26 21:48:26

标签: delphi ado

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

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

MyStoredProc.Open;
if not MyStoredProc.IsEmpty then
begin
  DoSomething;
end;

我通常使用的地方

MyStoredProc.Open;
if not MyStoredProc.Eof then
begin
  DoSomething;
end;

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

MyStoredProc.Open;
while not MyStoredProc.Eof then
begin
  DoSomething;
  MyStoredProc.Next;
end;

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

IsEmpty相当于Bof and Eof,不等同于Eof

在这种特殊情况下,在打开新数据集之后,它等同于Eof(因为您知道Bof也持有),但一般情况下并非如此。