TTCatalogクラスは、データベース内の表に関するメタデータ情報へのプログラム的なアクセスに使用される、トップ・レベルのクラスです。TTCatalogオブジェクト内には、TTCatalogTableオブジェクトの内部配列があります。コンストラクタを除くTTCatalogのすべてのパブリック・メソッドを使用して、そのTTCatalogTable配列への読取り専用アクセスを取得します。
なし
(constructor) TTCatalog (TTConnection*)
TTCatalogコンストラクタは、TTConnection*パラメータをキャッシュし、すべての内部データ構造を適切に初期化します。TTCatalogオブジェクトを使用するには、最初にfetchCatalogDataをコールする必要があります。
fetchCatalogData (TTStatus &)
これは、データ・ストアと相互作用する唯一のメソッドです。データ・ストアへの接続はコンストラクタによってキャッシュされたため、唯一のパラメータはTTStatusオブジェクトです。このメソッドは、自身を構築する際にデータベース内のカタログを読み取って表および索引に関する情報を取得し、それを内部データ構造に格納します。
その後、構築されたTTCatalogオブジェクトは完全にオフラインで使用されます。このオブジェクトは、構築後はデータベースに接続されません。
その他のTTCatalogアクセッサ・メソッドのいずれかを使用する前に、このメソッドをコールする必要があります。そうでないと、それらのメソッドによって有効な情報が返されません。
次の例に、TTCatalogの使用方法を示します。2つのデータベース・コール後のstat.rc
の確認は行いません。
TTConnection conn;
TTStatus stat;
conn.Connect(DSN=TptbmData37, stat);
TTCatalog cat (&conn);
cat.fetchCatalogData(stat);
// TTCatalog cat is no longer connected to the database;
// you can now query it through its read-only methods.
cerr << "There are " << cat.getNumTables()
<< " tables in this database:" << endl;
for (int i=0; i < cat.getNumTables(); i++)
cerr << cat.getTable(i).getTableOwner() << "."
<< cat.getTable(I).getTableName() << endl;
int getNumTables()
ユーザー表とシステム表の両方を含む、データベース内の表の合計数を返します。
int getNumUserTables()
データベース内のユーザー表の数を返します。
int getNumSysTables()
データベース内のシステム表の数を返します。
対応するgetSysTable(int)メソッドはありません。
const TTCatalogTable & getTable (const char * owner,
const char * tblname)
ownerによって所有されるtblnameという名前のデータベース表に対応するTTCatalogTableオブジェクトへの定数参照を返します。「TTCatalogTable」を参照してください。
const TTCatalogTable & getTable (int tno)
システム内の表番号tnoに対応するTTCatalogTableへの定数参照を返します。このメソッドは、システム内のすべての表を通じて反復を容易にするためのものです。この配列における表の順序は任意です。
0 <= tno <= getNumTables()という関係が保持されることに注意してください。
const TTCatalogTable & getUserTable (int tno)
システム内のユーザー表番号tnoに対応するTTCatalogTableへの定数参照を返します。このメソッドは、システム内のすべてのユーザー表を通じて反復を容易にするためのものです。この配列におけるユーザー表の順序は任意です。
0 <= tno <= getNumUserTables()という関係が保持されることに注意してください。
int getTableIndex (const char * owner, const char * tblname) const
このメソッドは、指定されたowner.tblnameオブジェクトに対するTTCatalogオブジェクト内の索引をフェッチします。owner.tblnameが存在しない場合は、-2を返します。カタログがTTCatalog::getTableIndexをコールする前にTTCatalog::fetchCatalogDataをコールしなかった場合は、-1を戻します。
次の例では、TTCatalogオブジェクトのTTUSER.MYDATA表に関する情報を取得します。その後、TTCatalogTable関数をコールして、TTUSER.MYDATA表に関する情報を取得することができます。
TTConnection conn;
TTStatus stat;
conn.Connect(...);
TTCatalog cat (&conn);
cat.fetchCatalogData(stat);
int idx = cat.getTableIndex("TTUSER", "MYDATA");
if (idx < 0) {
cerr << "Table TTUSER.MYDATA does not exist." << endl;
return;
}
TTCatalogTable &table = cat.getTable(idx);