-1

非常高兴连接到数据库以及所有这些。我的 Grid 对象很好,可以显示所有记录等。对 SQL 真的很满意。以及“DB 都是关于集合”的概念

我的问题是:

我创建了一个 ADO 查询或数据集对象,其中 SQL 仅返回一条记录。我知道我已经通过询问 MyFrame.ADOQuery1.RecordCount (它返回 1)来做到这一点,但是我如何才能简单地访问记录字段呢?

我想写

MyRecord[] := MyFrame.ADOQuery1.ReturnRecord; // 可能是当前记录,因为我知道只有一个

问题是:是否/我可以创建一个可用于将该记录读入的var 类型?我该怎么做?Kinda 认为会有一个 ADOQuery方法将记录返回到相同类型的数组中(尽管不确定如何指定该类型)(强调显示保留字与自然英语)

无论如何,我这几天一直在尝试这样做,但显然遗漏了一些东西。一如既往的帮助,感激不尽。

4

1 回答 1

3

所有 Delphi 数据集类型都源自TDataSet. 这实现了一个数据访问模型,其中数据集具有逻辑“光标”,如果数据集包含任何数据行,则该光标恰好位于一个数据行上,最初是打开数据集后立即出现的第一个数据行。数据集的Fields属性或其FieldByName方法可用于访问数据集光标指向的数据行的字段值。

导航或遍历数据集是使用数据集的导航方法之一(例如NextPrior和)MoveBy的简单问题。Locate例如

DataSet.First;
while not DataSet.Eof do begin
  Memo1.Lines.Add(DataSet.FieldByName('Country').AsString);
  DataSet.Next;
end;

如果您遵循了我上面所说的内容,那么这段代码的作用应该很明显 - 如果没有,请询​​问。

对于您的“年龄”示例,只需执行以下操作:

var
  Age : Integer;
[...]
  Age := DataSet.FieldByName('Age').AsInteger;
  • 就这么简单。

尝试使用记录通常不是一个好主意,因为您似乎打算存储当前数据行内容的副本。它对行数据进行了不必要且可避免的复制。

同样,使用数组来存储当前行的数据是不必要的,也不是真正的“Delphi”处理数据集行的方式,它更像是你可能(被迫)在 VB 或类似中做的事情。它对 Delphi 数据集几乎没有或根本没有好处。

于 2018-02-26T21:57:47.803 回答