TTCatalogは、データベースのシステム・カタログからのメタデータ読取りを容易にするために、TimesTen C++ Interface Classesに含まれています。
TTCatalogクラスの使用方法は、TimesTen C++ Interface Classesに含まれる他のクラスとかなり異なります。TTCatalogコンストラクタは、データベースに接続し、そのシステム・カタログを読み取った後、データベースへの接続を切断し、それ以上データベースと直接相互作用しません。生成されるオブジェクトには、データベース・カタログから読み取られたすべての情報を持ち、ユーザ・プログラムから簡単にアクセスできるデータ構造が含まれます。
各TTCatalogには、TTCatalogTableオブジェクトの配列が含まれます。各TTCatalogTableには、TTCatalogColumnオブジェクトの配列と、TTCatalogIndexオブジェクトの配列が含まれます。索引によってアクセスする場合、これらの配列へのアクセスはゼロ・ベースです。
TTCatalog内では次のODBC関数が使用されます。
TTCatalogの将来のバージョンには、次のODBC関数が組み込まれる予定です。
TTCatalogクラスは、データベースの表に関するメタデータ情報へのプログラム的なアクセスに使用される、トップ・レベルのクラスです。TTCatalogオブジェクト内には、TTCatalogTableオブジェクトの内部配列があります。コンストラクタを除くTTCatalogのすべてのパブリック・メソッドを使用して、そのTTCatalogTable配列への読取り専用アクセスを取得します。
なし
TTCatalogコンストラクタは、単にTTConnection*パラメータをキャッシュし、すべての内部データ構造を適切に初期化します。TTCatalogオブジェクトを実際に使用するには、最初にfetchCatalogData()(後述を参照)をコールする必要があります。
これは、データベースと相互作用する唯一のメソッドです。データ・ストアへの接続はコンストラクタによってキャッシュされたため、唯一のパラメータはTTStatusオブジェクトです。このメソッドは、自身を構築する際にデータベースのカタログを読み取って表および索引に関する情報を取得し、それを自身の内部データ構造に保管します。
その後、構築されたTTCatalogオブジェクトは完全にオフラインで使用されます。このオブジェクトは、構築後はデータベースに接続されません。
その他のTTCatalogアクセッサ・メソッドのいずれかを使用する前に、このメソッドをコールする必要があります。そうでないと、それらのメソッドによって有効な情報が返されません2。
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;
ユーザー表とシステム表の両方を含む、データベース内の表の合計数を返します。
データベース内のユーザー表の数を返します。
データベース内のシステム表の数を返します。
ownerによって所有される「tblname」という名前のデータベース表に対応するTTCatalogTableオブジェクトへの定数参照を返します。TTCatalogTableオブジェクトの使用方法は、次の項を参照してください。
システム内のi番目の表に対応するTTCatalogTableへの定数参照を返します。このメソッドは、システム内のすべての表を通じて反復を容易にするためのものです。この配列における表の順序は任意です。
0 <= i <= getNumTables()という関係が保持されることに注意してください。
システム内のi番目のユーザー表に対応するTTCatalogTableへの定数参照を返します。このメソッドは、システム内のすべてのユーザー表を通じて反復を容易にするためのものです。この配列におけるユーザー表の順序は任意です。
0 <= i <= getNumUserTables()という関係が保持されることに注意してください。
TTCatalogTableクラスは、表の列および索引に関するすべてのメタデータ情報を格納するために使用されます。
なし
表の所有者を返します。
表の名前を返します。
表の列数を返します。
表の索引数を返します。
表のi番目の列に対応するTTCatalogColumnへの定数参照を返します。このメソッドは、システム内のすべてのユーザー表を通じて反復を容易にするためのものです。
0 <= i <= getNumColumns()という関係が保持されることに注意してください。
表内のi番目の索引に対応するTTCatalogIndexへの定数参照を返します。このメソッドは、システム内のすべてのユーザー表を通じて反復を容易にするためのものです。この配列における表の索引の順序は任意です。
0 <= i <= getNumColumns()という関係が保持されることに注意してください。
TTCatalogColumnクラスは、(関連付けられたTTCatalogTableの)表の単一の列に関するすべてのメタデータ情報を格納するために使用されます。
なし
列の名前を返します。
列のデータ型を表す整数を返します。これは標準のODBC SQL型です。
getdata type()によって返された型に対応する(データベース依存の)名前を返します。
SQL_NO_NULLS、SQL_NULLABLEまたはSQL_NULLABLE_UNKNOWNを返します。
列の精度を返します。
列の長さを返します。
列のスケールを返します。
列の基数を返します。
TTCatalogIndexクラスは、(関連付けられたTTCatalogTableの)索引に関するすべての情報を格納するために使用されます。
なし
索引の名前を返します。
索引の所有者を返します。
この索引が存在する表の名前を返します。
索引の型を返します。TimesTenでは、許容値はPRIMARY_KEY、HASH_INDEX(PRIMARY_KEYと同じ)およびTTREE_INDEXです。その他のデータベースでは、許容値はSQL_INDEX_HASHEDおよびSQL_INDEX_CLUSTEREDです。
索引が一意索引かどうかを返します。trueは一意であることを示し、falseは一意でないことを示します。
索引の列数を返します。
索引のi番目の列の名前を返します。
索引のi番目の列の照合を返します。返される値は、索引が昇順の場合はA、降順の場合はDとなります。