メタデータのクエリ(FireDAC)

提供: RAD Studio
移動先: 案内検索

メタデータの操作(FireDAC) への移動


TFDConnection の使用

TFDConnection には、以下のように、データベース オブジェクト名のリストを返す GetXxxxNames("Xxxx" の部分がそれぞれ異なる)という使いやすい一連のメソッドが用意されています。

これらのメソッドが役に立つのは以下のような場合です。

  • アプリケーションでオブジェクト名が必要になる。
  • アプリケーションでは、これらのオブジェクトに関するそれ以上の情報は必要ない。

たとえば、GetTableNames メソッドでは、現在のデータベースおよびスキーマからテーブル名、ビュー名、シノニム名を取得します。これを呼び出すには、以下のようなコードを使用します。

FDConnection1.GetTableNames('Northwind', 'dbo', '', Memo1.Lines);

ACatalogName 引数や ASchemaName 引数を使用すると、返されるリストを指定のカタログやスキーマに制限することができます。これらを指定しない場合は、現在のデータベース/スキーマに含まれているすべての "可視" オブジェクトまたはすべてのオブジェクトが返されます。どちらになるかは DBMS によります。なお、一部の DBMS(たとえば Microsoft Access など)では、スキーマ/カタログが指定され、それが DBMS でサポートされていない場合は、エラーが返される可能性があります。

さらに、アプリケーションでは、AScopes 引数を使って、オブジェクトのリストをオブジェクトのスコープに基づいて制限することもできます。APattern 引数(LIKE 検索のマスク)はオブジェクト名に適用されます。

TFDCustomManager クラスにも似たメソッドがあります。

詳細については、FireDAC デモ(FireDAC\Samples\Comp Layer\TFDConnection\GetFieldNames)を参照してください。

TFDMetaInfoQuery の使用

TFDMetaInfoQuery は、メタデータ リストのクエリおよび閲覧を可能にするデータセット コンポーネントです。クエリや閲覧を行うには、ConnectionMetaInfoKind、さらにオプションで CatalogNameSchemaNameBaseObjectNameObjectName の各プロパティを設定し、データセットを開きます。テーブル リストを取得するには、以下のようなコードを使用します。

FDMetaInfoQuery1.Connection := FDConnection1;
FDMetaInfoQuery1.MetaInfoKind := mkTables;
FDMetaInfoQuery1.Open;

データセット構造については、「メタデータ構造」トピックを参照してください。DBMS で特定のメタデータ型をサポートしていない場合(たとえば、SQL Server では mkGenerators をサポートしていません)、空のデータセットが返されます。メタデータ データセットは読み取り専用で、編集することはできません。

メタデータ キャッシング

取得されたメタデータは、接続ごとに FireDAC によりキャッシュされます。それは、fiMeta を FetchOptions.Cache に含めることで制御されます。

FetchOptions.Cache から fiMeta を除いても、メタデータ キャッシュは無効にはなりません。キャッシュされたすべてのメタデータは、次に使用されるまで、キャッシュにそのまま残ります。指定したオブジェクトのメタデータ キャッシュまたはメタデータ キャッシュ全体を更新するには、TFDConnection.RefreshMetadataCache を使用します。

現在のカタログとスキーマ

現在のカタログ名とスキーマ名を取得するには、TFDConnection.ConnectionIntf.CurrentCatalog and CurrentSchema を使用します。現在のカタログまたはスキーマを変更するには、これらのプロパティに新しい値を割り当てます。

MetaCurCatalogMetaCurSchema を使用すると、データベース セッションから返される情報をオーバーライドできます。一部のデータベースについては、正しい値を指定するために、これらのパラメータを使用しなければならない可能性があります。API が間違った値を返すからです。

関連項目