例如,我可以获取某个字段的值。但是有可能找出字段的长度吗?
MyQuery.Fields[0].Value; // contains the value of the field
字段大小可以取自 Field.Size,如果此值为 0 Size,则它是您使用 Field.Datasize 的固定类型。
简短的例子:
uses TypInfo;
Procedure DisplayFieldInfos(DS:TDataset;List:TStrings);
var
i:Integer;
Function GetSize(F:Tfield):Integer;
begin
Result := F.Size;
if Result=0 then Result := F.DataSize;
end;
begin
for I := 0 to DS.FieldCount - 1 do
begin // display Fieldname [Datatype] : Size
List.Add(Format('%s [%s] : %d',
[
DS.Fields[i].FieldName,
GetEnumName(TypeInfo(TFieldType), integer(DS.Fields[i].Datatype)),
GetSize(DS.Fields[i])
]));
end;
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
DisplayFieldInfos(ADS,Memo1.Lines)
end;
看一眼
ADOQuery1.FieldDefList.FieldDefs[0].Size
看看这是否能给你你正在寻找的东西。
可以直接从 MySQL 中查询信息
SELECT column_name, column_type, character_maximum_length
FROM information_schema.columns
WHERE table_name = '...'
AND table_schema = '...'
只需提供table_name
and table_schema
,它将返回所有列及其长度(至少是字符串列的长度)。
这段代码对我有用:
My_Query.Close;
My_Query.SQL.Text :='select * From My_Table';
My_Query.Open;
Edit1.Text:= IntToStr(My_Query.FieldByName('My_Field').Size);