【问题标题】:Delphi: Reading number of columns + names from dataset?Delphi:从数据集中读取列数+名称?
【发布时间】:2009-07-11 14:52:25
【问题描述】:

由于 Embarcadero 的 NNTP 服务器从昨天开始停止响应,我想我可以在这里问:我使用的是非 DB 感知网格,我需要遍历数据集以提取列数、它们的名称、数字行数和每行中每个字段的值。

我知道读取每一行中所有字段的值,但我不知道如何提取与列相关的信息。有人手头有一些代码吗?

procedure TForm1.FormCreate(Sender: TObject);
var
  index : Integer;
begin
  With ASQLite3DB1 do begin
      DefaultDir := ExtractFileDir(Application.ExeName);
      Database := 'test.sqlite';
      CharacterEncoding := 'STANDARD';
      Open;
  end;

  With ASQLite3Query1 do begin
    ASQLite3Query1.Connection := ASQLite3DB1;

    SQL.Text := 'CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, label VARCHAR)';
    ExecSQL;

    SQL.Text := 'INSERT INTO mytable (label) VALUES ("dummy label")';
    ExecSQL;

    SQL.Text := 'SELECT id AS Identification, label AS Label FROM mytable';
    Open;

    //How to get column numbers + names to initialized grid object?
    for index := 0 to ASQLite3Query1. - 1 do begin

    end;

    for index := 0 to FieldCount - 1 do begin
      ShowMessage(Fields[index].AsString);
    end;
  end;
end;

谢谢。

【问题讨论】:

    标签: delphi dataset


    【解决方案1】:

    可以通过以下方式获取字段数量和名称:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with Query1 do
      begin
        ShowMessage(IntToStr(FieldCount));
        ShowMessage(Fields[0].FieldName);
      end;
    end;
    

    您可以查看TFieldDef 了解有关该字段的更多详细信息。

    dataset.FieldDefs[0] 具有 DataTypeSize 等属性。

    【讨论】:

      【解决方案2】:

      如果您要查找的是字段名称列表,请尝试创建一个 TStringList 并将其传递给 TDataset.Fields.GetFieldNames 过程。

      如果您想了解有关字段的更多信息,TFields 对象 (ASQLite3Query1.Fields) 具有 default 属性和 Count 属性,因此您可以像使用数组和枚举器一样使用它可用于遍历每个 TField 对象并检索其元数据。

      【讨论】:

      • 梅森,我确实通过改进代码格式来编辑问题,我没有更改“方便?”,但我看到你的名字与我所做的代码格式修订和我的“方便” ?”,似乎是 SO 的并发问题 :-)
      • 不确定你的意思。我修复了代码格式,第一次没有触及帖子中的任何其他内容。后来,在我注意到 ?。东西,我也修好了,但那是很久以后的事了。
      • 我的意思是,我没有对标有我的名字的修订进行更改,我对代码格式做了相同的代码(删除了 [code] 标签),但我看到它标有你的名字,所以我认为这是 SO 的并发问题。
      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2016-09-09
      • 2011-01-29
      • 1970-01-01
      相关资源
      最近更新 更多