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 () |
recordset * | clone () const |
size_t | count () const |
iterator | end () |
iterator | erase (size_t index) |
iterator | erase (const iterator &it) |
const fielddefs * | fieldDefs () const |
row & | first () const |
recordset & | groupBy (groupQuery &gq) |
recordset & | join (const recordset &rs, recordsetQuery &rq) |
row & | last () const |
recordset & | matchBy (recordsetQuery &rq) |
recordset & | operator+= (const recordset &r) |
recordset & | operator= (const recordset &r) |
row & | operator[] (size_t index) const |
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) |
recordset & | orderBy (const sortFields &orders) |
recordset & | outerJoin (const recordset &rs, recordsetQuery &rq) |
void | release () |
void | removeField (int index) |
void | reserve (size_t size) |
recordset & | reverse () |
size_t | size () const |
recordset & | top (recordset &c, int n) const |
静的公開メンバ関数 | |
static recordset * | create () |
activeTableの読み取りクエリー 結果セットクラス
activeTable による読み取りクエリーの結果はこのrecordsetクラスで受け取ります。 この結果を表示などのために、編集することは可能ですが、データベースにそのまま反映される(更新)ことはありません。
各行は row オブジェクトの参照として返されます。row は fieldsBase のtypedefです。
列定義は、 fieldDefs() 関数で返される fielddefs 型です。
値へのアクセスは 行、列ともに、[]演算子でアクセスできます。 たとえば、recodsetのインスタンス rsの先頭行の id 列のint値はrs[0]["id"].i()で取得できます。
recordset | ( | ) |
コンストラクタ。
~recordset | ( | ) |
デストラクタ。
void appendField | ( | const _TCHAR * | name, |
int | type, | ||
short | len | ||
) |
nmaeで指定された名前の列を列リストの最後に追加します。
追加されたフィールドの各行の値はゼロまたは""に初期化されます。
ft_myblobとft_mytextタイプのフィールドは追加できません。追加すると例外がスローされます。
name | 追加するフィールドの名前を指定します。 |
type | 追加するフィールドの型 タイプを指定します。 |
len | 追加するフィールドの長さを指定します。 |
void appendField | ( | const fielddef & | fd | ) |
fdで指定されたフィールドを列リストの最後に追加します。
追加されたフィールドの各行の値はゼロまたは""に初期化されます。
ft_myblobとft_mytextタイプのフィールドは追加できません。追加すると例外がスローされます。
iterator begin | ( | ) |
先頭行を指すイテレータを返します。
void clear | ( | ) |
すべての行と列をクリアします。
void clearRecords | ( | ) |
すべての行をクリアします。
recordset * clone | ( | ) | const |
クローンを生成して返します。このクローンは深いコピーです。この関数で返されたオブジェクトを破棄する際は delete 演算子でなく release()で破棄しなければなりません。
size_t count | ( | ) | const |
行数を返します。
|
static |
recordsetオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
iterator end | ( | ) |
最後の行の一つ後ろを指すイテレータを返します。
iterator erase | ( | size_t | index | ) |
indexで指定された行番号の行を削除します。
const fielddefs * fieldDefs | ( | ) | const |
列定義を示す、フィールドリストを返します。
recordset & groupBy | ( | groupQuery & | gq | ) |
gqで指定されたクエリに従って、行をグルーピングします。また、gqに計算関数が設定されていた場合はその計算も実行し 結果をこのオブジェクトに格納します。
recordset & join | ( | const recordset & | rs, |
recordsetQuery & | rq | ||
) |
rs で指定したレコードセットを指定した条件で右側に結合し、結果を返します。
結合条件は recordsetQuery rq で指定します。条件の左側のパラメータにこのレコードセットの 列名、右側に rs の列名を指定します。 and_() や or_() で複数の条件を指定できます。
結合出来なかった行は削除されます。
結合条件は、列と列との関係以外は指定できません。レコードのフィルタリングは事前に matchBy() を使って 行ってください。
結合条件で比較する列の型が異なる場合は以下のように処理されます。
結合アルゴリズムは nested-loop です。
両方の列数が少なければ少ないほどパフォーマンスが良くなります。
recordset & matchBy | ( | recordsetQuery & | rq | ) |
rで指定された recordset オブジェクトのすべての行をこのオブジェクトの最後に追加します。
rで指定される recordset の列定義は、このオブジェクトの列定義と同じでなければなりません。 異なっている場合は例外がスローされます。
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 クラスを参照してください。
recordset & outerJoin | ( | const recordset & | rs, |
recordsetQuery & | rq | ||
) |
rs で指定したレコードセットを指定した条件で右側に結合し、結果を返します。
結合出来なかった行もそのまま残ります。 その他の事項は Join() と同様です。
void removeField | ( | int | index | ) |
indexで指定された列を削除します。
void reserve | ( | size_t | size | ) |
事前に size で指定した行数のメモリを確保します。
recordset & reverse | ( | ) |
行の並び順を逆順にします。
size_t size | ( | ) | const |
行数を返します。