自从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;
谢谢。
最佳答案
可以按以下方式获取字段数及其名称:
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
的属性。