全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 ページ
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
activeTable クラス

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 ()
 
activeTablealias (const _TCHAR *orign, const _TCHAR *alias)
 
writableRecordgetWritableRecord ()
 
activeTableindex (int v)
 
recordsetjoin (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)
 
recordsetjoin (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 >
activeTablekeyValue (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
 
activeTableoption (int v)
 
recordsetouterJoin (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)
 
recordsetouterJoin (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)
 
recordsetread (recordset &rs, queryBase &q)
 
recordsetread (recordset &rs, queryBase &q, validationFunc func)
 
recordsetread (recordset &rs, pq_handle &q)
 
recordsetread (recordset &rs, pq_handle &q, validationFunc func)
 
recordsetreadMore (recordset &rs)
 
void release ()
 
void releaseTable ()
 
activeTableresetAlias ()
 
table_ptr table () const
 

静的公開メンバ関数

static activeTablecreate (idatabaseManager *mgr, const _TCHAR *tableName)
 
static activeTablecreate (dbmanager_ptr &mgr, const _TCHAR *tableName)
 
static activeTablecreate (database_ptr &db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL)
 
static activeTablecreate (database *db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL)
 
static activeTablecreate (database_ptr &db, short tableIndex, short mode=TD_OPEN_NORMAL)
 
static activeTablecreate (database *db, short tableIndex, short mode=TD_OPEN_NORMAL)
 

詳解

recordset 用テーブルアクセスクラス

activeTableは、結果セットに recordset 型を受け取る、 activeObject の実装です。 activeObject の機能に 加えて、 join outerJoin を行うことができます。また、 recordset で行える orderBy mathcBy groupBy などを組み合わせてクライアント側でSQLで行なう DDL 操作のほとんどを行うことができます。

注釈
textまたはblob型のデータもrecordset内のメモリにコピーされます。そのため、大きなサイズのデータの場合 大量のデータコピーとメモリ消費が発生します。 これを避けたい場合は、table クラスによるアクセスを検討してください。
参照
recordset activeObject

構築子と解体子

activeTable ( idatabaseManager mgr,
const _TCHAR *  tableName 
)
explicit

コンストラクタ。 idatabaseManager を渡して生成します。テーブル名はtableNameで指定されたものが使用されます。

引数
mgridatabaseManager 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
activeTable ( dbmanager_ptr db,
const _TCHAR *  tableName 
)
explicit

コンストラクタ。 dbmaneger_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。

引数
dbdbmaneger_ptr 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
activeTable ( database_ptr db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
explicit

コンストラクタ。 database_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。

引数
dbdatabase_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
参照
database::open()
activeTable ( database db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
explicit

コンストラクタ。 database* を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。

引数
dbdatabase* 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
参照
database::open()
activeTable ( database_ptr db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
explicit

コンストラクタ。 database_ptr を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。

引数
dbdatabase_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableIndexこのオブジェクトで使用するテーブル番号を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
参照
database::open()
activeTable ( database db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
explicit

コンストラクタ。 database* を渡して生成します。
テーブル名はtableNameで指定されたものが使用されます。

引数
dbdatabase* 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableIndexこのオブジェクトで使用するテーブル番号を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
参照
database::open()

デストラクタ。 getWritableRecord() で生成された writableRecord オブジェクトはここで自動的に破棄されます。

参照
getWritableRecord()

関数詳解

activeTable & alias ( const _TCHAR *  src,
const _TCHAR *  dst 
)

フィールド名の別名をセットします。
複数の別名を定義するには、この関数を繰り返し呼び出してください。
recordset で使用するフィールド名はここで指定した別名に変更されます。
別名を定義した場合、 query で使用するフィールド名は必ずそれを使用してください。元の名前を使用することはできません。

引数
src既存のフィールド名を指定します。
dst別名を指定します。
戻り値
メソッドチェーンのために *this を返します。
参照
resetAlias()
static activeTable * create ( idatabaseManager mgr,
const _TCHAR *  tableName 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

static activeTable * create ( dbmanager_ptr mgr,
const _TCHAR *  tableName 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

static activeTable * create ( database_ptr db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

static activeTable * create ( database db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

static activeTable * create ( database_ptr db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

static activeTable * create ( database db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
static

activeTableオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。

writableRecord & getWritableRecord ( )

読み書き可能な getWritableRecord を返します。 このオブジェクトは、activeTable の1インスタンスに対して1つだけ用意されます。複数回呼び出しても、返されるインスタンスは常に同じものになります。また、このインスタンスの生存は、activeTableが管理します。

戻り値
writableRecord のインスタンスが返ります。
activeTable & index ( int  v)

この後のオペレーションで使用される、テーブルのインデックス番号をセットします。

引数
vテーブルのインデックス番号
戻り値
メソッドチェーンのために *this を返します。
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で指定したキー値で決まります。

注釈
もし、recordset の各行のキーフィールドがすべてユニークであることが事前にわかっている場合は、q の optimize() にjoinHasOneOrHasMany を指定してください。(1対1(hasOne)と1対多(hasMany)の結合の場合)内部で、キーフィールドをサマライズする処理を省略しパフォーマンスが向上します。
引数
rsjoin元になる 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
戻り値
メソッドチェーンのために *this を返します。
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で指定したキー値で決まります。

注釈
もし、recordset の各行のキーフィールドがすべてユニークであることが事前にわかっている場合は、q の optimize() にjoinHasOneOrHasMany を指定してください。(1対1(hasOne)と1対多(hasMany)の結合の場合)内部で、キーフィールドをサマライズする処理を省略しパフォーマンスが向上します。
引数
[in,out]rsjoin元になる 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
戻り値
メソッドチェーンのために *this を返します。
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 
)
inline

index() で指定したキー値をセットします。マルチセグメントキーの場合は、セグメントの順番どおりに左のパラメータから順に、必要な分だけ値をセットします。引数はテンプレートで table::setFV() 関数でオーバーロードされた型を使用できます。
引数はマルチセグメントキーの最大セグメント数である8個まで指定できます。セグメント数以上の必要のない部分は省略可能です。

戻り値
メソッドチェーンのために *this を返します。
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で指定したキー値で決まります。

注釈
もし、recordset の各行のキーフィールドがすべてユニークであることが事前にわかっている場合は、q の optimize() にjoinHasOneOrHasMany を指定してください。(1対1(hasOne)と1対多(hasMany)の結合の場合)内部で、キーフィールドをサマライズする処理を省略しパフォーマンスが向上します。
引数
[in,out]rsjoin元になる 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
戻り値
メソッドチェーンのために *this を返します。
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で指定したキー値で決まります。

注釈
もし、recordset の各行のキーフィールドがすべてユニークであることが事前にわかっている場合は、q の optimize() にjoinHasOneOrHasMany を指定してください。(1対1(hasOne)と1対多(hasMany)の結合の場合)内部で、キーフィールドをサマライズする処理を省略しパフォーマンスが向上します。
引数
[in,out]rsjoin元になる 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
戻り値
メソッドチェーンのために *this を返します。
pq_handle prepare ( queryBase q,
bool  serverPrepare = false 
)

クエリーをキャッシュして、使用時に識別するプリペアードクエリーハンドルを返します。

引数
[in]qあらかじめ、条件を指定したクエリーをセットします。条件の値には後で値をセットするプレースホルダとして"?"を複数使用することができます。
[in]serverPrepareこのクエリーをサーバーにキャッシュするかどうかを指定します。 falseを指定するとクライアント側でのみキャッシュします。
戻り値
プリぺアードクエリー(クライアントキャッシュ済のフィルターまたはクエリ)のハンドルが返ります。セットしたクエリーにプレースホルダーの?が含まれていればこのハンドルを使用して値をセットする必要があります。 無ければ、そのまますぐに read() join() outerJoin() などのオペレーションを実行できます。 プレースホルダーへの値のセットは、 preparedQuery クラスか、supplyValue() supplyValues() 関数を使って行います。 サーバーにキャッシュされたプリぺアードクエリーはこのテーブルをクローズするまで有効です。 サーバーにキャッシュした場合とそうでない場合で、その後の操作に何ら変わりはありません。 サーバーにキャッシュするとこのメソッド実行時に通信が行われます。 そのテーブルをクローズするまでに、一度しか使われないような場合はキャッシュしないほうが効率的になります。
activeTable & read ( recordset rs,
queryBase q 
)

このテーブルのレコードを q で指定した条件で rs で指定したrecordset に読み取ります。
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。

引数
rs結果を受け取る 空のrecordset オブジェクトを指定します。
q取得するレコードやフィールドの条件を設定した query を指定します。
戻り値
メソッドチェーンのために *this を返します。

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フィルタリング関数を指定します。
戻り値
メソッドチェーンのために *this を返します。

rs で指定する recordsetは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。

activeTable & read ( recordset rs,
pq_handle &  q 
)

このテーブルのレコードを q で指定したプリペアードクエリを使用して rs で指定したrecordset に読み取ります。
このメソッドを呼ぶ前に、index() と keyField() でキー番号と検索開始キー値を指定しておく必要があります。

引数
rs結果を受け取る recordset オブジェクトを指定します。
q取得するレコードやフィールドの条件を設定した プリペアードクエリ を指定します。
戻り値
メソッドチェーンのために *this を返します。

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フィルタリング関数を指定します。
戻り値
メソッドチェーンのために *this を返します。

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() で指定した別名をすべてクリアし無効にします。

table_ptr table ( ) const

内部で使用される table_ptr を返します。

Transactd SDK 2018年07月31日(火) 19時40分31秒 doxygen