Delphi. FireDAC. Получение метаданных

Эта статья о способах получения метаданных в FireDAC. Она основана на официальной документации.

-Старая версия

-Новая версия

Метаданные в  FireDAC можно получить при помощи компонента TFDMetaInfoQuery или нескольких методов FDConnection.

Методы TFDConnection

Эти методы полезны когда

-приложению нужны имена объектов

-приложение не нуждается в дополнительной информации об этих объектах

Например, метод GetTableNames получает таблицы, представления и синонимы имен из текущей базы данных.

Из справки

Параметры ACatalogName и/или ASchemaName – это выбор имени каталога, схемы. Если они не определены, то мы получим все видимые объекты или объекты в текущей БД / схеме. Это зависит от БД. Параметр APattern это аргумент, аналогичный LIKE – поисковая маска. Аналогичный метод можно найти в TFDCustomManager.

Демо доступно по адресу FireDAC\Samples\Comp Layer\TFDConnection\GetFieldNames.

TFDMetaInfoQuery

TFDMetaInfoQuery это компонент, который возвращает множество (“датасет”), состоящее из метаданных. Чтобы выбрать тип получаемых метаданных можно выбрать свойство MetaInfoKind, перед этим установив параметр Connection. Также можно опционально выбрать свойства CatalogName, SchemaName, BaseObjectName и ObjectName. Чтобы получить список таблиц, можно поступить следующим образом.

Для описания структуры датасета смотрите Metadata Structure. Если БД что-то не поддерживает (например MySQL не поддерживает генераторы), то вернется пустое множество. Датасет может быть только прочитан. Read-only.

Кэширование метаданных 

Полученные метаданные кэшируются FireDAC с каждым соединением. Это настраивается включением fiMeta в FetchOptions.Cache.

Исключение fiMeta из FetchOptions.Cache не аннулирует кэш. Все кэшированные метаданные остаются до следующего использования. Чтобы обновить метаданные, используйте метод TFDConnection.RefreshMetadataCache

Текущий каталог и схема 

TFDConnection.ConnectionIntf.CurrentCatalog выдаст текущий каталог

FDConnection1.ConnectionIntf.CurrentSchema – выдаст текущую схему

To get the current catalog and schema name, use TFDConnection.ConnectionIntf.CurrentCatalog and CurrentSchema. To change the current catalog or schema, assign new values to these properties.

MetaCurCatalog и MetaCurSchema позволяют переписать информацию, возвращаемую из БД.

 

This entry was posted in Delphi, FireDAC. Bookmark the permalink.