0

例如,我可以获取某个字段的值。但是有可能找出字段的长度吗?

MyQuery.Fields[0].Value; // contains the value of the field
4

4 回答 4

2

字段大小可以取自 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;
于 2013-04-19T06:12:09.483 回答
0

看一眼

ADOQuery1.FieldDefList.FieldDefs[0].Size

看看这是否能给你你正在寻找的东西。

于 2013-04-18T23:34:10.977 回答
0

可以直接从 MySQL 中查询信息

SELECT column_name, column_type, character_maximum_length 
FROM information_schema.columns
WHERE table_name = '...'
  AND table_schema = '...'

只需提供table_nameand table_schema,它将返回所有列及其长度(至少是字符串列的长度)。

于 2013-04-18T23:45:44.333 回答
0

这段代码对我有用:

My_Query.Close;
My_Query.SQL.Text :='select * From My_Table';
My_Query.Open;

Edit1.Text:= IntToStr(My_Query.FieldByName('My_Field').Size);
于 2018-12-22T04:56:35.450 回答