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

activeTableの読み取りクエリー 結果セットクラス [詳解]

#include <recordset.h>

公開型

typedef std::vector< row_ptr >
::iterator 
iterator
 

公開メンバ関数

 recordset ()
 
 recordset (const recordset &r)
 
 ~recordset ()
 
void appendField (const _TCHAR *name, int type, short len)
 
void appendField (const fielddef &fd)
 
iterator begin ()
 
void clear ()
 
void clearRecords ()
 
recordsetclone () const
 
size_t count () const
 
iterator end ()
 
iterator erase (size_t index)
 
iterator erase (const iterator &it)
 
const fielddefsfieldDefs () const
 
rowfirst () const
 
recordsetgroupBy (groupQuery &gq)
 
recordsetjoin (const recordset &rs, recordsetQuery &rq)
 
rowlast () const
 
recordsetmatchBy (recordsetQuery &rq)
 
recordsetoperator+= (const recordset &r)
 
recordsetoperator= (const recordset &r)
 
rowoperator[] (size_t index) const
 
recordsetorderBy (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)
 
recordsetorderBy (const sortFields &orders)
 
recordsetouterJoin (const recordset &rs, recordsetQuery &rq)
 
void release ()
 
void removeField (int index)
 
void reserve (size_t size)
 
recordsetreverse ()
 
size_t size () const
 
recordsettop (recordset &c, int n) const
 

静的公開メンバ関数

static recordsetcreate ()
 

詳解

activeTableの読み取りクエリー 結果セットクラス

activeTable による読み取りクエリーの結果はこのrecordsetクラスで受け取ります。 この結果を表示などのために、編集することは可能ですが、データベースにそのまま反映される(更新)ことはありません。
各行は row オブジェクトの参照として返されます。row は fieldsBase のtypedefです。
列定義は、 fieldDefs() 関数で返される fielddefs 型です。
値へのアクセスは 行、列ともに、[]演算子でアクセスできます。 たとえば、recodsetのインスタンス rsの先頭行の id 列のint値はrs[0]["id"].i()で取得できます。

参照
activeTable fieldsBase fielddefs

型定義メンバ詳解

std::vector< row_ptr >::iterator iterator

行を指すイテレータ型です。

構築子と解体子

recordset ( )

コンストラクタ。

recordset ( const recordset r)

コピーコンストラクタ。

~recordset ( )

デストラクタ。

関数詳解

void appendField ( const _TCHAR *  name,
int  type,
short  len 
)

nmaeで指定された名前の列を列リストの最後に追加します。
追加されたフィールドの各行の値はゼロまたは""に初期化されます。
ft_myblobとft_mytextタイプのフィールドは追加できません。追加すると例外がスローされます。

引数
name追加するフィールドの名前を指定します。
type追加するフィールドの型 タイプを指定します。
len追加するフィールドの長さを指定します。
参照
fielddef
void appendField ( const fielddef fd)

fdで指定されたフィールドを列リストの最後に追加します。
追加されたフィールドの各行の値はゼロまたは""に初期化されます。
ft_myblobとft_mytextタイプのフィールドは追加できません。追加すると例外がスローされます。

参照
fielddef
iterator begin ( )

先頭行を指すイテレータを返します。

void clear ( )

すべての行と列をクリアします。

void clearRecords ( )

すべての行をクリアします。

recordset * clone ( ) const

クローンを生成して返します。このクローンは深いコピーです。この関数で返されたオブジェクトを破棄する際は delete 演算子でなく release()で破棄しなければなりません。

size_t count ( ) const

行数を返します。

static recordset * create ( )
static

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

iterator end ( )

最後の行の一つ後ろを指すイテレータを返します。

iterator erase ( size_t  index)

indexで指定された行番号の行を削除します。

iterator erase ( const iterator it)

itで指定されたイテレータの指す行を削除し、その行のイテレータを返します。

const fielddefs * fieldDefs ( ) const

列定義を示す、フィールドリストを返します。

row & first ( ) const

先頭行のrowオブジェクトへの参照を返します。

recordset & groupBy ( groupQuery gq)

gqで指定されたクエリに従って、行をグルーピングします。また、gqに計算関数が設定されていた場合はその計算も実行し 結果をこのオブジェクトに格納します。

戻り値
メソッドチェーンのために *this を返します。
参照
groupQuery
recordset & join ( const recordset rs,
recordsetQuery rq 
)

rs で指定したレコードセットを指定した条件で右側に結合し、結果を返します。
結合条件は recordsetQuery rq で指定します。条件の左側のパラメータにこのレコードセットの 列名、右側に rs の列名を指定します。 and_() や or_() で複数の条件を指定できます。
結合出来なかった行は削除されます。

 
// rs と rs2 をJoinします
recordsetQuery rq;
rq.when("group", "=", "id");// groupはrsの列, id は rs2 の列
rs.join(rs2, rq);
 

結合条件は、列と列との関係以外は指定できません。レコードのフィルタリングは事前に matchBy() を使って 行ってください。

結合条件で比較する列の型が異なる場合は以下のように処理されます。

  • 数値型のサイズ違いは、小さいサイズで比較されます。オーバーフローは検出されません。
  • 型が異なる場合は右側 rs の型に左側の型が変換されて比較されます。
  • BLOB・TEXT型はJoinのキーとしては使用できません。指定した場合は例外がスローされます。

結合アルゴリズムは nested-loop です。
両方の列数が少なければ少ないほどパフォーマンスが良くなります。

row & last ( ) const

最後尾の行のrowオブジェクトへの参照を返します。

recordset & matchBy ( recordsetQuery rq)

rqで指定されたクエリに従って、行をフィルタリングしマッチしない行を削除します。

戻り値
メソッドチェーンのために *this を返します。
参照
recordsetQuery
recordset & operator+= ( const recordset r)

rで指定された recordset オブジェクトのすべての行をこのオブジェクトの最後に追加します。
rで指定される recordset の列定義は、このオブジェクトの列定義と同じでなければなりません。 異なっている場合は例外がスローされます。

戻り値
メソッドチェーンのために *this を返します。
recordset & operator= ( const recordset r)

代入演算子。

row & operator[] ( size_t  index) const

indexで指定された行のrowオブジェクトへの参照を返します。

recordset & orderBy ( 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 
)

neme1 〜 name8で指定されたフィールドをキーにして行を昇順にソートします。

recordset & orderBy ( const sortFields orders)

フィールドごとに昇順、降順を指定するにはこの関数を使用します。

sortField構造体のvector配列を渡します。詳しくは、sortFields クラスを参照してください。

 
sortFields sfs;
sfs.add("id", false);
rs.orderBy(sfs);
 
recordset & outerJoin ( const recordset rs,
recordsetQuery rq 
)

rs で指定したレコードセットを指定した条件で右側に結合し、結果を返します。
結合出来なかった行もそのまま残ります。 その他の事項は Join() と同様です。

void release ( )

recordsetオブジェクトを破棄します。 create()clone() で生成されたオブジェクトは必ずこの関数で破棄してください。

void removeField ( int  index)

indexで指定された列を削除します。

void reserve ( size_t  size)

事前に size で指定した行数のメモリを確保します。

recordset & reverse ( )

行の並び順を逆順にします。

size_t size ( ) const

行数を返します。

recordset & top ( recordset c,
int  n 
) const

先頭からn番目までの行をcにコピーして cを返します。
もし、行数 this->size() がnに満たない場合は、すべての行がコピーされます。

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