如何在TADOQuery中获取字段的长度?

时间:2013-04-18 23:27:08

标签: mysql delphi delphi-7

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

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

4 个答案:

答案 0 :(得分:2)

字段大小可以从Field.Size获取,如果此值为0大小它是您使用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;

答案 1 :(得分:0)

看看

ADOQuery1.FieldDefList.FieldDefs[0].Size

看看那是否能满足您的需求。

答案 2 :(得分:0)

您可以直接从MySQL查询信息

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

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

答案 3 :(得分:0)

此代码与我合作:

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

Edit1.Text:= IntToStr(My_Query.FieldByName('My_Field').Size);