メタデータの取得
データベースへの接続:インデックス への移動
すべてのデータベース接続コンポーネントは、データベース サーバー上のメタデータのリストを取得することができますが、この取得するメタデータの型は多岐に及びます。メタデータを取得するメソッドは、サーバー上で利用可能なさまざまなエンティティの名前で、文字列リストを設定します。その後、この情報を使用して、たとえばユーザーは、実行時にテーブルの選択を、動的に行えるようになります。
TADOConnection コンポーネントを使用すると、ADO データ ストア上で利用可能なテーブルとストアド プロシージャについての、メタデータを取得することができます。その後、この情報を使用して、たとえばユーザーは、実行時にテーブルやストアド プロシージャの選択を、動的に行えるようになります。
目次
使用可能なテーブルの一覧表示
The GetTableNames メソッドは、テーブル名のリストを、すでにある文字列リスト オブジェクトにコピーします。これは、たとえば、ユーザーがその後、開くテーブルの選択に使用するテーブル名のリストで、リスト ボックスを設定する際などに、使用することができます。次の行は、listbox を、データベースにあるすべてのテーブルの名前で埋めています:
MyDBConnection.GetTableNames(ListBox1.Items, False);
GetTableNames には、2 つのパラメータ -- テーブル名で設定された文字列リスト、および、リストがシステム テーブルを格納するべきか、もしくは通常テーブルなのかを示すブーリアン値 -- があります。すべてのサーバーが、メタデータを格納するのにシステム テーブルを使用するわけではない点に注意してください。システム テーブルを要求した際に、空のリストが返される場合もあります。
メモ: 大抵のデータベース接続コンポーネントの場合、GetTableNames は、第2パラメータが False だと、システム テーブル以外の利用可能なテーブルすべてのリストを返します。しかし、TSQLConnection の場合、システム テーブルの名前以外もフェッチしている場合、リストに追加される種類を、より詳しく制御することができます。TSQLConnection を使用する際、リストに追加された名前のタイプは、TableScope プロパティによって制御されます。TableScope は、リストが、次のいずれか、もしくはすべてを含むべきかどうかを示します: 通常のテーブル、システム テーブル、シノニム、ビュー。
テーブル内のフィールドのリスト
GetFieldNames メソッドは、指定されたテーブル内のフィールド(列)で、既存の文字列リストを設定します。GetFieldNames は 2 つのパラメータを取り、それらは、フィールドをリストにしたいテーブルの名前、および、フィールド名を設定したい既存の文字列リストです。
MyDBConnection.GetFieldNames('Employee', ListBox1.Items);
利用可能なストアド プロシージャのリスト
データベースに格納されているすべてのストアド プロシージャのリストを取得するには、GetProcedureNames メソッドを使用します。このメソッドは 1 つのパラメータ -- 設定したい既存の文字列リスト -- をとります:
MyDBConnection.GetProcedureNames(ListBox1.Items);
メモ: GetProcedureNames は、TADOConnection と TSQLConnection に対して利用可能です。
使用可能なインデックスの一覧表示
指定されたテーブルに対して定義されているすべてのインデックスのリストを取得するには、GetIndexNames メソッドを使用します。このメソッドは 2 つのパラメータを受け取ります: 望むインデックスを持つテーブルと、設定したい既存の文字列リスト、です。
SQLConnection1.GetIndexNames('Employee', ListBox1.Items);
メモ: GetIndexNames は、TSQLConnection でのみ使用可能ですが、大抵のテーブル型のデータセットは同様のメソッドを持っています。
ストアド プロシージャのパラメータのリスト
特定のストアド プロシージャに対して定義されたすべてのパラメータのリストを取得するには、GetProcedureParams メソッドを使用します。GetProcedureParams は、TList オブジェクトをパラメータ記述レコードへのポインタで設定し、そこでは、各レコードが、指定されたストアド プロシージャのパラメータ(名前、インデックス、パラメータ型、フィールド型、など)を記述します。
GetProcedureParams は 2 つのパラメータを取ります: それは、ストアド プロシージャの名前と、値を入れる既存の TList オブジェクトです。
SQLConnection1.GetProcedureParams('GetInterestRate', List1);
リストに追加するパラメータの記述を、より扱いやすい TParams オブジェクトに変換するには、グローバルの LoadParamListItems プロシージャを呼び出します。GetProcedureParams は各レコードの領域を動的に確保するため、アプリケーションは、その情報の利用が終了したら、それらを解放しなければなりません。グローバルの FreeProcParams ルーチンが、これを行ってくれます。
メモ: GetProcedureParams は、TSQLConnection でのみ利用可能です。