recordset 用テーブルアクセスクラス [詳解]
#include <activeTable.h>
公開メンバ関数 | |
activeTable (idatabaseManager *mgr, const _TCHAR *tableName) | |
activeTable (dbmanager_ptr &mgr, const _TCHAR *tableName) | |
activeTable (database_ptr &db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL) | |
activeTable (database *db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL) | |
activeTable (database_ptr &db, short tableIndex, short mode=TD_OPEN_NORMAL) | |
activeTable (database *db, short tableIndex, short mode=TD_OPEN_NORMAL) | |
~activeTable () | |
activeTable & | alias (const _TCHAR *orign, const _TCHAR *alias) |
writableRecord & | getWritableRecord () |
activeTable & | index (int v) |
recordset & | join (recordset &rs, queryBase &q, const _TCHAR *name1, const _TCHAR *name2=NULL, const _TCHAR *name3=NULL, const _TCHAR *name4=NULL, const _TCHAR *name5=NULL, const _TCHAR *name6=NULL, const _TCHAR *name7=NULL, const _TCHAR *name8=NULL) |
recordset & | join (recordset &rs, pq_handle &q, const _TCHAR *name1, const _TCHAR *name2=NULL, const _TCHAR *name3=NULL, const _TCHAR *name4=NULL, const _TCHAR *name5=NULL, const _TCHAR *name6=NULL, const _TCHAR *name7=NULL, const _TCHAR *name8=NULL) |
template<class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
activeTable & | keyValue (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7) |
activeTable & | option (int v) |
recordset & | outerJoin (recordset &rs, queryBase &q, const _TCHAR *name1, const _TCHAR *name2=NULL, const _TCHAR *name3=NULL, const _TCHAR *name4=NULL, const _TCHAR *name5=NULL, const _TCHAR *name6=NULL, const _TCHAR *name7=NULL, const _TCHAR *name8=NULL) |
recordset & | outerJoin (recordset &rs, pq_handle &q, const _TCHAR *name1, const _TCHAR *name2=NULL, const _TCHAR *name3=NULL, const _TCHAR *name4=NULL, const _TCHAR *name5=NULL, const _TCHAR *name6=NULL, const _TCHAR *name7=NULL, const _TCHAR *name8=NULL) |
pq_handle | prepare (queryBase &q, bool serverPrepare=false) |
recordset & | read (recordset &rs, queryBase &q) |
recordset & | read (recordset &rs, queryBase &q, validationFunc func) |
recordset & | read (recordset &rs, pq_handle &q) |
recordset & | read (recordset &rs, pq_handle &q, validationFunc func) |
recordset & | readMore (recordset &rs) |
void | release () |
void | releaseTable () |
activeTable & | resetAlias () |
table_ptr | table () const |
静的公開メンバ関数 | |
static activeTable * | create (idatabaseManager *mgr, const _TCHAR *tableName) |
static activeTable * | create (dbmanager_ptr &mgr, const _TCHAR *tableName) |
static activeTable * | create (database_ptr &db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL) |
static activeTable * | create (database *db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL) |
static activeTable * | create (database_ptr &db, short tableIndex, short mode=TD_OPEN_NORMAL) |
static activeTable * | create (database *db, short tableIndex, short mode=TD_OPEN_NORMAL) |
recordset 用テーブルアクセスクラス
activeTableは、結果セットに recordset 型を受け取る、 activeObject の実装です。 activeObject の機能に 加えて、 join outerJoin を行うことができます。また、 recordset で行える orderBy mathcBy groupBy などを組み合わせてクライアント側でSQLで行なう DDL 操作のほとんどを行うことができます。
|
explicit |
コンストラクタ。 idatabaseManager を渡して生成します。テーブル名はtableNameで指定されたものが使用されます。
mgr | idatabaseManager 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。 |
tableName | このオブジェクトで使用するテーブル名を指定します。 |
|
explicit |
コンストラクタ。 dbmaneger_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。
db | dbmaneger_ptr 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。 |
tableName | このオブジェクトで使用するテーブル名を指定します。 |
|
explicit |
コンストラクタ。 database_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。
db | database_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。 |
tableName | このオブジェクトで使用するテーブル名を指定します。 |
mode | テーブルがオープンされる際に使用するモードを指定します。 |
|
explicit |
コンストラクタ。 database* を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。
db | database* 型のインスタンスでデータベースをオープン済みの状態で渡します。 |
tableName | このオブジェクトで使用するテーブル名を指定します。 |
mode | テーブルがオープンされる際に使用するモードを指定します。 |
|
explicit |
コンストラクタ。 database_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。
db | database_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。 |
tableIndex | このオブジェクトで使用するテーブル番号を指定します。 |
mode | テーブルがオープンされる際に使用するモードを指定します。 |
|
explicit |
コンストラクタ。 database* を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。
db | database* 型のインスタンスでデータベースをオープン済みの状態で渡します。 |
tableIndex | このオブジェクトで使用するテーブル番号を指定します。 |
mode | テーブルがオープンされる際に使用するモードを指定します。 |
~activeTable | ( | ) |
デストラクタ。 getWritableRecord() で生成された writableRecord オブジェクトはここで自動的に破棄されます。
activeTable & alias | ( | const _TCHAR * | src, |
const _TCHAR * | dst | ||
) |
フィールド名の別名をセットします。
複数の別名を定義するには、この関数を繰り返し呼び出してください。
recordset で使用するフィールド名はここで指定した別名に変更されます。
別名を定義した場合、 query で使用するフィールド名は必ずそれを使用してください。元の名前を使用することはできません。
src | 既存のフィールド名を指定します。 |
dst | 別名を指定します。 |
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
|
static |
activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
writableRecord & getWritableRecord | ( | ) |
読み書き可能な getWritableRecord を返します。 このオブジェクトは、activeTable の1インスタンスに対して1つだけ用意されます。複数回呼び出しても、返されるインスタンスは常に同じものになります。また、このインスタンスの生存は、activeTableが管理します。
activeTable & index | ( | int | v | ) |
この後のオペレーションで使用される、テーブルのインデックス番号をセットします。
v | テーブルのインデックス番号 |
activeTable & join | ( | recordset & | rs, |
queryBase & | q, | ||
const _TCHAR * | name1, | ||
const _TCHAR * | name2 = NULL , |
||
const _TCHAR * | name3 = NULL , |
||
const _TCHAR * | name4 = NULL , |
||
const _TCHAR * | name5 = NULL , |
||
const _TCHAR * | name6 = NULL , |
||
const _TCHAR * | name7 = NULL , |
||
const _TCHAR * | name8 = NULL |
||
) |
既に取得済みの recordset にこのテーブルのフィールドをinnerjoinします。
recordset の各行がこのテーブルのどのレコードとjoinするかは、index() で指定したキーと name1 からname8で指定したキー値で決まります。
rs | join元になる recordset を渡します。joinされた結果もこれに返ります。 | |
q | このテーブルのどのフィールドをjoinするか、select() で指定済みの query を渡します。 query のwhere() and_() or_() など指定された値はすべて無視されます。 | |
[in] | name1 | このテーブルのレコードを特定するキー値を、rsのフィールド名で指定します。マルチセグメントキーのために、8個まで指定できます。 |
[in] | name2 | |
[in] | name3 | |
[in] | name4 | |
[in] | name5 | |
[in] | name6 | |
[in] | name7 | |
[in] | name8 |
activeTable & join | ( | recordset & | rs, |
pq_handle & | q, | ||
const _TCHAR * | name1, | ||
const _TCHAR * | name2 = NULL , |
||
const _TCHAR * | name3 = NULL , |
||
const _TCHAR * | name4 = NULL , |
||
const _TCHAR * | name5 = NULL , |
||
const _TCHAR * | name6 = NULL , |
||
const _TCHAR * | name7 = NULL , |
||
const _TCHAR * | name8 = NULL |
||
) |
既に取得済みの recordset にこのテーブルのフィールドをinnerjoinします。
recordset の各行がこのテーブルのどのレコードとjoinするかは、index() で指定したキーと name1 からname8で指定したキー値で決まります。
[in,out] | rs | join元になる recordset を渡します。joinされた結果もこれに返ります。 |
[in] | q | このテーブルのどのフィールドをjoinするか、select() で指定済みのプリペアードクエリーのハンドルを渡します。クエリーのwhere() and_() or_() など指定された値はすべて無視されます。 |
[in] | name1 | このテーブルのレコードを特定するキー値を、rsのフィールド名で指定します。マルチセグメントキーのために、8個まで指定できます。 |
[in] | name2 | |
[in] | name3 | |
[in] | name4 | |
[in] | name5 | |
[in] | name6 | |
[in] | name7 | |
[in] | name8 |
|
inline |
index() で指定したキー値をセットします。マルチセグメントキーの場合は、セグメントの順番どおりに左のパラメータから順に、必要な分だけ値をセットします。引数はテンプレートで table::setFV() 関数でオーバーロードされた型を使用できます。
引数はマルチセグメントキーの最大セグメント数である8個まで指定できます。セグメント数以上の必要のない部分は省略可能です。
activeTable & option | ( | int | v | ) |
オプションを設定します。現在のところこのオプションは使用されていません。将来のために予約されています。
activeTable & outerJoin | ( | recordset & | rs, |
queryBase & | q, | ||
const _TCHAR * | name1, | ||
const _TCHAR * | name2 = NULL , |
||
const _TCHAR * | name3 = NULL , |
||
const _TCHAR * | name4 = NULL , |
||
const _TCHAR * | name5 = NULL , |
||
const _TCHAR * | name6 = NULL , |
||
const _TCHAR * | name7 = NULL , |
||
const _TCHAR * | name8 = NULL |
||
) |
既に取得済みの recordset にこのテーブルのフィールドをouterjoinします。outerjoinはjoinと異なりキーフィールドの値 でこのテーブルにレコードが見つからなくてもその recordset の行は有効で、追加すべきフィールドの値にはゼロまたは""がセットされます。
recordset の各行がこのテーブルのどのレコードとjoinするかは、index() で指定したキーと name1 からname8で指定したキー値で決まります。
[in,out] | rs | join元になる recordset を渡します。joinされた結果もこれに返ります。 |
[in] | q | このテーブルのどのフィールドをjoinするか、select() で指定済みの query を渡します。 query のwhere() and_() or_() など指定された値はすべて無視されます。 |
[in] | name1 | このテーブルのレコードを特定するキー値を、rsのフィールド名で指定します。マルチセグメントキーのために、8個まで指定できます。 |
[in] | name2 | |
[in] | name3 | |
[in] | name4 | |
[in] | name5 | |
[in] | name6 | |
[in] | name7 | |
[in] | name8 |
activeTable & outerJoin | ( | recordset & | rs, |
pq_handle & | q, | ||
const _TCHAR * | name1, | ||
const _TCHAR * | name2 = NULL , |
||
const _TCHAR * | name3 = NULL , |
||
const _TCHAR * | name4 = NULL , |
||
const _TCHAR * | name5 = NULL , |
||
const _TCHAR * | name6 = NULL , |
||
const _TCHAR * | name7 = NULL , |
||
const _TCHAR * | name8 = NULL |
||
) |
既に取得済みの recordset にこのテーブルのフィールドをouterjoinします。outerjoinはjoinと異なりキーフィールドの値でこのテーブルにレコードが見つからなくてもその recordset の行は有効で、追加すべきフィールドの値にはゼロまたは""がセットされます。
recordset の各行がこのテーブルのどのレコードとjoinするかは、index() で指定したキーと name1 からname8で指定したキー値で決まります。
[in,out] | rs | join元になる recordset を渡します。joinされた結果もこれに返ります。 |
[in] | q | このテーブルのどのフィールドをjoinするか、select() で指定済みのプリペアードクエリーのハンドルを渡します。クエリーのwhere() and_() or_() など指定された値はすべて無視されます。 |
[in] | name1 | このテーブルのレコードを特定するキー値を、rsのフィールド名で指定します。マルチセグメントキーのために、8個まで指定できます。 |
[in] | name2 | |
[in] | name3 | |
[in] | name4 | |
[in] | name5 | |
[in] | name6 | |
[in] | name7 | |
[in] | name8 |
pq_handle prepare | ( | queryBase & | q, |
bool | serverPrepare = false |
||
) |
クエリーをキャッシュして、使用時に識別するプリペアードクエリーハンドルを返します。
[in] | q | あらかじめ、条件を指定したクエリーをセットします。条件の値には後で値をセットするプレースホルダとして"?"を複数使用することができます。 |
[in] | serverPrepare | このクエリーをサーバーにキャッシュするかどうかを指定します。 falseを指定するとクライアント側でのみキャッシュします。 |
activeTable & read | ( | recordset & | rs, |
queryBase & | q | ||
) |
このテーブルのレコードを q で指定した条件で rs で指定したrecordset に読み取ります。
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。
rs | 結果を受け取る 空のrecordset オブジェクトを指定します。 |
q | 取得するレコードやフィールドの条件を設定した query を指定します。 |
rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
activeTable & read | ( | recordset & | rs, |
queryBase & | q, | ||
validationFunc | func | ||
) |
このテーブルのレコードを q で指定した条件で rs で指定したrecordset に読み取ります。
また、func で指定されたクライアントフィルターでレコードをフィルタリングします。
フィルタリング関数はint型を返しconst fields & を引数に取る関数です。 int func(const fields &)
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。
rs | 結果を受け取る recordset オブジェクトを指定します。 |
q | 取得するレコードやフィールドの条件を設定した query を指定します。 |
func | フィルタリング関数を指定します。 |
rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
activeTable & read | ( | recordset & | rs, |
pq_handle & | q | ||
) |
このテーブルのレコードを q で指定したプリペアードクエリを使用して rs で指定したrecordset に読み取ります。
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。
rs | 結果を受け取る recordset オブジェクトを指定します。 |
q | 取得するレコードやフィールドの条件を設定した プリペアードクエリ を指定します。 |
rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
activeTable & read | ( | recordset & | rs, |
pq_handle & | q, | ||
validationFunc | func | ||
) |
このテーブルのレコードを q で指定したプリペアードクエリを使用して rs で指定したrecordset に読み取ります。
また、func で指定されたクライアントフィルターでレコードをフィルタリングします。
フィルタリング関数はint型を返しconst fields & を引数に取る関数です。 int func(const fields &)
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。
rs | 結果を受け取る recordset オブジェクトを指定します。 |
q | 取得するレコードやフィールドの条件を設定した プリペアードクエリ を指定します。 |
func | フィルタリング関数を指定します。 |
rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
activeTable & readMore | ( | recordset & | rs | ) |
直前の read() がクエリの reject() または limit() によって検索が中止されていた場合、 最後に検索したレコードのその続きから前回のクエリーの内容で読み取りを行います。
rs | 結果を受け取る recordset オブジェクトを指定します。 |
rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
また、このテーブルに対する直前のオペレーションは activeTable::read() でなければなりません。それ以外のオペレーションの後で、この関数を呼び出した時の動作は不定です。
前回の読み取り結果と今回の結果は別の recordset オブジェクトで受け取りますが、recordset::operator+=() 関数で高速に結合することができます。 (C++以外の言語では union() 関数)
直前の read() がクエリの reject() または limit()以外の理由で終了していた場合、この関数を呼び出しても何も読み取られません。検索の終了ステータスの詳細は、 table::statReasonOfFind() を参照してください。
void release | ( | ) |
activeTableオブジェクトを破棄します。 create() で生成したオブジェクトは必ずこの関数で破棄してください。
void releaseTable | ( | ) |
activeTableオブジェクト内部で使用しているテーブルを解放します。
この関数は、このオブジェクトを破棄するタイミングをコントロールできない言語(現状ではRubyのみ)のみで使用します。 Rubyはいつオブジェクトが破棄されるか不明なためテーブルがそのまま使用されたままの状態になります。 この関数を呼び出すと、内部のテーブルを即座に解放できます。
activeTable & resetAlias | ( | ) |
alias() で指定した別名をすべてクリアし無効にします。