TUniMetadata and database structure.

TUniMetadata and database structure.

Hi!

Now I can get tables, columns, columns types and indexes.

tables
  1. procedure
  2. var
  3.   FUniMetaData: TUniMetaData;
  4. begin
  5.   FUniMetaData := TUniMetaData.Create(nil);
  6.   try
  7.     FUniMetaData.Connection := FConnection;
  8.     FUniMetaData.MetaDataKind := 'Tables';
  9.     FUniMetaData.Open;
  10.     while not FUniMetaData.Eof do
  11.     begin
  12.       ... := FUniMetaData.FieldByName('TABLE_NAME').AsString;
  13.       FMetaQuery.Next;
  14.     end;
  15.   finally
  16.     FMetaQuery.DisposeOf;
  17.   end;
  18. end;

columns, types
  1. procedure 
  2. var
  3.   FUniMetaData: TUniMetaData;
  4. begin
  5.   FUniMetaData:= TUniMetaData.Create(nil);
  6.   try
  7.     FUniMetaData.Connection := FConnection;
  8.     FUniMetaData.Restrictions.Values['TABLE_NAME'] := FTable;
  9.     FUniMetaData.MetaDataKind := 'Columns';
  10.     FUniMetaData.Open;
  11.   while not FUniMetaData.Eof do
  12.   begin
  13.   ... := FUniMetaData.FieldByName('COLUMN_NAME').AsString;
  14.   ... := FUniMetaData.FieldByName('DATA_TYPE').AsString;
  15.   ... := FUniMetaData.FieldByName('DATA_LENGTH').AsInteger;
  16.     FUniMetaData.Next;
  17.   end;
  18.   finally
  19.     FUniMetaData.DisposeOf;
  20.   end;
  21. end;

indexes
  1. procedure
  2. var
  3.   FUniMetaData: TUniMetaData;
  4. begin
  5.   FUniMetaData:= TUniMetaData.Create(nil);
  6.   try
  7.     FUniMetaData.Connection := FConnection;
  8.     FUniMetaData.Restrictions.Values['TABLE_NAME'] := FTable;
  9.     FUniMetaData.MetaDataKind := 'Indexes';
  10.     FUniMetaData.Open;
  11.   while not FUniMetaData.Eof do
  12.   begin
  13.     ... := FUniMetaData.FieldByName('INDEX_NAME').AsString;
  14.     FUniMetaData.Next;
  15.   end;

  16.   finally
  17.     FUniMetaData.DisposeOf;
  18.   end;
  19. end;

IndexColumns
  1. procedure 
  2. var
  3.   FUniMetaData: TUniMetaData;
  4.   index: TUIndex;
  5.   s: string;
  6. begin
  7.   FUniMetaData:= TUniMetaData.Create(nil);
  8.   try
  9.     FUniMetaData.Connection := AConnection;
  10.     FUniMetaData.Restrictions.Values['TABLE_NAME'] := ATable;
  11.     FUniMetaData.Restrictions.Values['INDEX_NAME'] := AIndex;
  12.     FUniMetaData.MetaDataKind := 'IndexColumns';
  13.     FUniMetaData.Open;
  14.     while not FUniMetaData.Eof do
  15.     begin
  16.       ... := FUniMetaData.FieldByName('COLUMN_NAME').AsString;
  17.       FUniMetaData.Next;
  18.     end;
  19.   finally
  20.     FUniMetaData.DisposeOf;
  21.   end;
  22. end;

But I need to get also foreign keys and their composition.

How can I do this for MySql and MS Access?