首页 > 解决方案 > 为什么类型名称_Recordset 中有下划线?

问题描述

我有查询数据库的代码,如下所示:

uses Data.DB, Data.Win.ADODB;

// ...

var
  cmd: TAdoCommand;
  r: _Recordset;
  firstName: string;

begin
  cmd := TAdoCommand.Create(nil);
  try
    cmd.ConnectionString := 'Server=dbServer;Database=master';
    cmd.CommandText := 'select FirstName from customers where id=123';
    r := cmd.Execute;
    firstName := '';
    if not r.EOF then firstName := r.Fields.Item['FirstName'].Value
  finally
    cmd.Free
  end

  // ...
end

这可行,但我想知道它是否不是理想的编写方式,因为_Recordset类型开头的下划线。下划线似乎在告诉我,这种类型在某种程度上是“内部的”,不能在标准代码中使用。

有没有更标准的方法来编写这种代码?如果不是,为什么那里有下划线?

标签: delphi

解决方案


如果将 Winapi.ADIOnt 添加到 use 子句,则可以删除下划线并使用RecordSet.

这是因为在 Data.Win.ADODB 我们有:

 _Recordset = Winapi.ADOInt.Recordset;

在 Winapi.ADOInt 我们有:

Recordset = _Recordset;
_Recordset = interface(Recordset21)

推荐阅读