由于Embarcadero的NNTP服务器自昨天起停止响应,我想我可以在这里问:我使用非数据库感知网格,我需要遍历数据集以提取列数,名称,数量行和每行中每个字段的值。
我知道要读取每行中所有字段的值,但我不知道如何提取与列相关的信息。有人有一些方便的代码吗?
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;
谢谢。
答案 0 :(得分:3)
可以按如下方式获取字段数及其名称:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do
begin
ShowMessage(IntToStr(FieldCount));
ShowMessage(Fields[0].FieldName);
end;
end;
您可以结帐TFieldDef
以获取有关该字段的更多详细信息。
dataset.FieldDefs[0]
包含DataType
和Size
等属性。
答案 1 :(得分:1)
如果您要查找的是字段名称列表,请尝试创建TStringList并将其传递给TDataset.Fields.GetFieldNames过程。
如果您想了解有关字段的更多信息,TFields对象(ASQLite3Query1.Fields)具有默认属性和Count属性,因此您可以像使用数组和枚举器一样使用它可用于循环遍历每个TField对象并检索其元数据。