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

テーブルアクセスの基本クラス (abstruct nocopyable) [詳解]

#include <nsTable.h>

+ nstable の継承関係図

公開型

enum  eFindType { findForword, findBackForword, findContinue }
 findオペレーションで検索の方向を示すタイプ [詳解]
 
enum  eUpdateType { changeCurrentCc, changeCurrentNcc, changeInKey }
 更新オペレーションの対象とカレント移動のタイプ [詳解]
 

公開メンバ関数

 nstable (nsdatabase *pbe)
 
void abortBulkInsert ()
 
void addref (void)
 
void beginBulkInsert (int maxBuflen=BULKBUFSIZE)
 
bookmark_td bookmark ()
 
ushort_td bookmarkLen () const
 
uint_td buflen () const
 
bool canDelete () const
 
bool canInsert () const
 
bool canRead () const
 
bool canWrite () const
 
void clearOwnerName ()
 
void close ()
 
ushort_td commitBulkInsert (bool autoCommit=false)
 
void createIndex (bool specifyKeyNum=false)
 
const void * data () const
 
uint_td datalen () const
 
void del (bool in_key=false)
 
void dropIndex (bool norenumber=false)
 
char * getCreateSql (char *retbuf, uint_td *size)
 
percentage_td getPercentage ()
 
percentage_td getPercentage (bookmark_td &bm)
 
uint_td getWriteImageLen ()
 
ushort_td insert (bool ncc=false)
 
bool isOpen () const
 
bool isUseTransactd () const
 
char_td keyNum () const
 
char_td mode () const
 
nsdatabasensdb () const
 
uint_td recordCount (bool estimate=true, bool fromCurrent=false)
 
ushort_td recordLength ()
 
int refCount () const
 
void release ()
 
void seek (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekByBookmark (bookmark_td &bm, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekByBookmark ()
 
void seekByPercentage ()
 
void seekByPercentage (percentage_td pc)
 
void seekFirst (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekGreater (bool orEqual, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekLast (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekLessThan (bool orEqual, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekNext (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekPrev (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void setAccessRights (unsigned char curd)
 
void setBuflen (uint_td v)
 
void setData (void *v)
 
void setKeyNum (char_td v)
 
void setOwnerName (const _TCHAR *name, char_td enctype=0)
 
void setStat (short_td v)
 
void setTableid (short v)
 
void setTimestampMode (int mode)
 
bool setUpdateConflictCheck (bool v)
 
short_td stat () const
 
_TCHAR * statMsg (_TCHAR *retbuf)
 
void stats (void *databuffer, uint_td buflen, bool estimate=true)
 
void stepFirst (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepLast (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepNext (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepPrev (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
short tableid () const
 
void tdap (ushort_td op)
 
short_td tdapErr (HWND hWnd, _TCHAR *retbuf=NULL)
 
void unlock (bookmark_td &bm)
 
void unlock ()
 
void update (eUpdateType type=changeCurrentCc)
 
bool updateConflictCheck () const
 

静的公開メンバ関数

static bool existsFile (const _TCHAR *filename)
 
static _TCHAR * getDirURI (const _TCHAR *uri, _TCHAR *retbuf)
 
static _TCHAR * getFileName (const _TCHAR *uri, _TCHAR *retbuf)
 
static short_td tdapErr (HWND hWnd, short_td status, const _TCHAR *tableName=NULL, _TCHAR *retbuf=NULL)
 
static void throwError (const _TCHAR *caption, short statusCode)
 
static void throwError (const _TCHAR *caption, nstable *tb)
 

静的公開変数類

static const bool inkey = true
 

限定公開メンバ関数

virtual ~nstable ()
 
bulkInsert * bulkIns () const
 
void destroy ()
 
virtual void doAbortBulkInsert ()
 
virtual short_td doBtrvErr (HWND hWnd, _TCHAR *retbuf)
 
virtual void doClose ()
 
virtual ushort_td doCommitBulkInsert (bool autoCommit)
 
virtual void doCreateIndex (bool specifyKeyNum)
 
virtual void doDel (bool inkey)
 
virtual uint_td doGetWriteImageLen ()
 
virtual void doOpen (const _TCHAR *name, char_td mode, const _TCHAR *ownername)
 
virtual uint_td doRecordCount (bool estimate, bool fromCurrent)
 
const bzs::db::blobHeader * getBlobHeader ()
 
virtual bool getUpdateStampEnable () const
 
virtual __int64 getUpdateStampValue () const
 
virtual bool isUniqeKey (char_td keynum)
 
virtual bool onDeleteCheck (bool in_key)
 
virtual void onInsertAfter (int beforeResult)
 
virtual int onInsertBefore ()
 
virtual void onReadAfter ()=0
 
virtual void onUpdateAfter (int beforeResult)
 
virtual int onUpdateBefore ()
 
virtual bool onUpdateCheck (eUpdateType type)
 
void open (const _TCHAR *uri, char_td mode=0, const _TCHAR *ownerName=NULL)
 
const uchar_td * posblk () const
 
void seekByBookmark (bookmark_td *bm, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void setIsOpen (bool v)
 
void setMode (char_td v)
 
void setShared ()
 
const _TCHAR * uri () const
 
virtual keylen_td writeKeyData ()
 
virtual void writeRecordData ()=0
 

限定公開変数類

union {
   struct {
      uchar_td   m_delete: 1
 
      uchar_td   m_insart: 1
 
      uchar_td   m_read: 1
 
      uchar_td   m_reserverd: 4
 
      uchar_td   m_write: 1
 
   } 
 
   uchar_td   m_curd
 
}; 
 
uint_td m_buflen
 
uint_td m_datalen
 
void * m_keybuf
 
keylen_td m_keybuflen
 
keylen_td m_keylen
 
char_td m_keynum
 
ushort_td m_op
 
void * m_pdata
 
short_td m_stat
 

詳解

テーブルアクセスの基本クラス (abstruct nocopyable)

スキーマ情報を必要としない基本的なナビゲーションやRUIDオペレーションを行います。 ユーザーはこのクラスを直接使うことはありません。継承したtableクラスを使用します。 各種オペレーションの実行結果は stat()で取得し判断します。 このクラスは特殊なテーブルへのアクセスを提供したいときに継承して使用します。 このクラスはコピーできません。デストラクタはアクセスできません。破棄は release()を呼び出します。

列挙型メンバ詳解

enum eFindType

findオペレーションで検索の方向を示すタイプ

列挙値
findForword 

インデックス順の先頭から後方に向かって検索します。

findBackForword 

インデックス順の最後から前方に向かって検索します。

findContinue 

更新オペレーションの対象とカレント移動のタイプ

列挙値
changeCurrentCc 

レコードの更新で現在のカレントレコードをデータバッファのイメージで更新します。また キー値を更新した場合カレントレコードは新しいキー値の位置になります。(currecy change)

changeCurrentNcc 

レコードの更新でchangeCurrentCcと同様に現在のカレントレコードをデータバッファのイメージで更新します。 キー値が更新されても、カレントレコードは更新前の位置を維持します。(no currecy change)

changeInKey 

レコードの更新でキー番号とデータバッファのキー値で指定されたレコードをデータバッファのイメージで更新します。 キー番号で指定されたキー値は変更できません。指定するキー番号は、重複を許可しないユニークキーでなければなりません。 このオペレーションは事前にカレントレコードを確立する必要はありません。

構築子と解体子

~nstable ( )
protectedvirtual

デストラクタはprotectedです。破棄は替りにnstable::release()を呼び出してください。

nstable ( nsdatabase pbe)
explicit

コンストラクタにはnsdatabaseのポインターを渡します。

関数詳解

void abortBulkInsert ( )
inline

バルクインサートモードを終了します。 キャッシュされたinsertオペレーションは実行されずに破棄されます。

addref ( void  )

インスタンスの参照数カウンタを+1します。

void beginBulkInsert ( int  maxBuflen = BULKBUFSIZE)

バルクインサートモードを開始します。 バルクインサート開始後に呼び出されたinseretオペレーションをすぐには サーバーには送らずクライアント側にキャッシュします。 commitBulkInsertを呼び出した時点でまとめてサーバーに送信されます。

引数
maxBuflenキャッシュするバッファのサイズを指定します。バッファは最大64KBまでです。 バッファがいっぱいになると、自動でcommitBulkInsert(autoCommit)を呼び出しバッファを解放します。
bookmark_td bookmark ( )

カレントレコードのブックマークを取得します。 また内部にその値をキャッシュします。キャッシュは最後の一つのみです。 実行結果はstat()で取得します。成功するとゼロが返ります。

ushort_td bookmarkLen ( ) const

ブックマークの値の長さを取得します。通常ブックマークはbookmark_td型で扱うため、ここで得られた値を直接使うことは ほとんど有りません。 唯一、 table::insertBookmarks() で渡すdetaを構成する際にみ使用します。

uint_td buflen ( ) const
inline

データバッファの確保された長さを返します。

bulkInsert * bulkIns ( ) const
protected

bulkInsertクラスのポインターを返します。

uchar_td canDelete ( ) const
inline

レコードの削除処理が可能かどうかを返します。

uchar_td canInsert ( ) const
inline

レコードのインサート処理が可能かどうかを返します。

uchar_td canRead ( ) const
inline

レコードのリードアクセスが可能かどうかを返します。

uchar_td canWrite ( ) const
inline

レコードの更新処理が可能かどうかを返します。

void clearOwnerName ( )

オーナネームをクリアします。 実行結果はstat()で取得します。成功するとゼロが返ります。

void close ( )
inline

テーブルをクローズします。

ushort_td commitBulkInsert ( bool  autoCommit = false)
inline

キャッシュ下インサートデータをサーバーに転送し実行します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
autoCommit自動挿入によるものかどうかを指定します。アプリケーションからは常にfalseを指定してください。
戻り値
挿入されたレコード数を返します。
void createIndex ( bool  specifyKeyNum = false)
inline

インデックスを追加します。
あらかじめ database::dbDef() で返される dbDef オブジェクトを使ってスキーマにインデックスを追加し table::setKeyNum() でそのキー番号を指定します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
specifyKeyNum追加するキーのキー番号が定義で指定されたものを使用するよう指示します。この値はP.SQLでのみ使用可能です。
注意
追加に失敗した場合、事前にスキーマ追加したインデックスの情報は削除されません。必要に応じてユーザーが削除する必要があります。
const void * data ( ) const
inline

レコードバッファのポインタを返します。

uint_td datalen ( ) const
inline

データバッファに読み取ったレコードの長さを返します。

void del ( bool  inkey = false)
inline

指定したレコードレコードを削除します。

引数
inkey
  • false 現在のカレントレコードを削除します。
  • true キー番号とデータバッファのキー値で指定されたレコードを削除します。指定するキー番号は、重複を許可しないユニークキーでなければなりません。 このオペレーションは事前にカレントレコードを確立する必要はありません。

実行結果はstat()で取得します。成功するとゼロが返ります。

void destroy ( )
protected

内部でdelete thisを呼び出します。通常この関数は使用しないでください。

void doAbortBulkInsert ( )
protectedvirtual

バルクインサートをキャンセルする際にフレームワークから呼び出されます。 オーバーライドして追加の処理をする場合は、必ずデフォルトの実装を呼び出すようにしてください。

short_td doBtrvErr ( HWND  hWnd,
_TCHAR *  retbuf 
)
protectedvirtual

エラーメッセージを取得します。

引数
hWndウィンドウハンドルを指定します。無い場合はNULLを指定します。
retbufメッセージを受け取るバッファを指定します。バッファは512以上確保する必要があります。
戻り値
エラーコードを返します。通常はstat()と同じ値ですが、STATUS_EOFとSTATUS_NOT_FOUND_TI の場合、STATUS_SUCCESSを返します。
void doClose ( )
protectedvirtual

テーブルのクローズを実装します。 クローズ処理で追加の処理を行う場合はこのメソッドをオーバーライドします。

ushort_td doCommitBulkInsert ( bool  autoCommit)
protectedvirtual

commitBulkInsert()を実装します。

void doCreateIndex ( bool  specifyKeyNum)
protectedvirtual

インデックスの追加処理を実装します。 キーの作成に成功すると、最後のキー番号+1のキー番号として利用できます。

引数
specifyKeyNumキー番号を指定する場合はtrueにします。trueを指定すると 事前にsetKeyNumにて指定されたキー番号のキーとして作成されます。(PSQLオンリー)
void doDel ( bool  inkey)
protectedvirtual

レコードの削除 deleteオペレーションを実行します。 deleteの前後に追加の処理を行いたい場合はこの関数をオーバーライドします。

uint_td doGetWriteImageLen ( )
inlineprotectedvirtual

getWriteImageLenの実装を行います。 getWriteImageLenは書き込みレコードの有効長さを返します。 デフォルト実装はbuflen()を返します。

戻り値
書き込みレコードの有効長さ
void doOpen ( const _TCHAR *  name,
char_td  mode,
const _TCHAR *  ownername 
)
protectedvirtual

テーブルのオープンを実装します。 パラメータはopenメソッドを参照してください。 オープン処理で追加の処理を行う場合はこのメソッドをオーバーライドします。

uint_td doRecordCount ( bool  estimate,
bool  fromCurrent 
)
protectedvirtual

現在のレコード数を返す関数を実装します。

void dropIndex ( bool  norenumber = false)

setKeyNumで指定されたインデックスを削除します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
norenumberこのオペレーションによって削除したキーが最後で無い場合、 連続したキー番号にする再付番処理が行われます。(PSQLのみ)これを行わないようにしたい場合は trueを指定します。 transactdの場合は常に再付番処理は行われません。 trueの場合このオペレーションによって削除したインデックス番号は空き番号になります。
static bool existsFile ( const _TCHAR *  filename)
static

指定したファイルが存在するかどうかを返します。

const bzs::db::blobHeader * getBlobHeader ( )
protected

読み取りオペレーションで取得したBlobのヘッダーを取得します。

char * getCreateSql ( char *  retbuf,
uint_td *  size 
)

このテーブルの生成 SQL文を取得します。

引数
rebuf結果を受け取るバッファの先頭アドレスを指定します。
size結果を受け取るバッファの長さのアドレスを指定します。
戻り値
成功すると、utf8でエンコードされたテーブルの生成文がrebufに返ります。またその長さがsizeに返されます。 バッファの長さが十分で無い場合は、 stat() にSTATUS_BUFFERTOOSMALLが返り、size に必要な長さが返されます。
static _TCHAR * getDirURI ( const _TCHAR *  uri,
_TCHAR *  retbuf 
)
static

uriからファイル名を取り除いた残りを取得します。

引数
uriuriを指定します。
retbuf結果を受け取るバッファの先頭アドレスを指定します。 バッファは結果を受け取るのに十分な長さを確保してください。
static _TCHAR * getFileName ( const _TCHAR *  uri,
_TCHAR *  filename 
)
static

uriからファイル名を取得するします。

引数
uriuriを指定します。
filenameファイル名を受け取るバッファの先頭アドレスを指定します。 バッファはファイル名を受け取るのに十分な長さを確保してください。
percentage_td getPercentage ( )

カレントレコードの位置をテーブル先頭からテーブル全体での百分率で返します。 返された値は100倍されています。すなわち0〜10000までの値を返します。 この値は、おおよその値であって正確なものではありません。 実行結果はstat()で取得します。成功するとゼロが返ります。

注釈
Transactdで、トランザクション中またはスナップショット中にこの関数を呼び出した場合、レコード数を数えるために多くのレコードがロックされます。この条件での呼び出しはなるべく行わないようにしてください。
percentage_td getPercentage ( bookmark_td bm)

指定したブックマークレコードの位置をテーブル先頭からテーブル全体での百分率で返します。 返された値は100倍されています。すなわち0〜10000までの値を返します。 この値は、おおよその値であって正確なものではありません。 実行結果はstat()で取得します。成功するとゼロが返ります。 また、この結果を内部に一つだけキャッシュします。

注釈
Transactdで、トランザクション中またはスナップショット中にこの関数を呼び出した場合、レコード数を数えるために多くのレコードがロックされます。この条件での呼び出しはなるべく行わないようにしてください。
bool getUpdateStampEnable ( ) const
inlineprotectedvirtual

更新時に自動でタイムスタンプを記録するフィールドあるかどうかを返します。

__int64 getUpdateStampValue ( ) const
inlineprotectedvirtual

更新時に自動でタイムスタンプを記録するフィールドがある場合その値をレコードバッファから読み取って__int64値で返します。

uint_td getWriteImageLen ( )
inline

書き込みイメージの有効長さを返します。

ushort_td insert ( bool  ncc = false)
inline

現在のデータバッファのイメージをインサートします インサートが成功するとカレントレコードは追加したレコードがカレントレコードになります。 カレントレコードを追加前まま維持したい場合はncc(no currency change ) をtrueにセットします。 実行結果コードはstat()で取得します。

戻り値
インサートしたレコード数が返ります。
bool isOpen ( ) const

テーブルが既にオープンされているかどうかを返します。

bool isUniqeKey ( char_td  keynum)
inlineprotectedvirtual

keynumで指定されたインデックスがユニークインデックス(重複値を許可しないインデックス) かどうかを返します。

tableで再実装されています。

bool void isUseTransactd ( ) const

現在の処理対象が transactdサーバーをターゲットにしているかどうかを返します。

char_td keyNum ( ) const
inline

現在のキー番号を返します。

char_td mode ( ) const

open() でテーブルをオープンしたときに指定された mode を返します。
この値は、 database::compatibleMode() で指定した値によって database::openTable() で指定したmodeパラメータに加えて以下のパラメータが付加される場合があります。 この値は実際にサーバーに送信された mode です。

  • TD_OPEN_MASK_MYSQL_NULL -16
  • TD_OPEN_MASK_GETSHCHEMA -32
  • TD_OPEN_MASK_GETDEFAULTIMAGE -64
  • TD_OPEN_MASK_BIN_STR -128

database::openTable() で指定した mode の値は以下のコードで求めることができます。

char_td getMode(char_td mode)
{
if (mode <= -128) mode += 128;
if (mode <= -64) mode += 64;
if (mode <= -32) mode += 32;
if (mode <= -16) mode += 16;
return mode;
}

mode についての詳細は open() を参照してください。

nsdatabase * nsdb ( ) const

コンストラクタで指定されたnsdatabaseクラスのポインターを返します。

bool onDeleteCheck ( bool  inkey)
inlineprotectedvirtual

nstableを継承して利用するための関数です。 レコードを削除する前に del() 関数内から呼び出されます。 削除を許可しない場合はfalseを返してください。

tableで再実装されています。

void onInsertAfter ( int  beforeResult)
protectedvirtual

insertオペレーション内からそのオペレーションの実行後に呼び出されます。 insert後に追加の処理を行いたい場合はこの関数をオーバーライドします。

tableで再実装されています。

int onInsertBefore ( )
inlineprotectedvirtual

insertオペレーション内からそのオペレーションの実行前に呼び出されます。 insert前に追加の処理を行いたい場合はこの関数をオーバーライドします。

戻り値
ここで返された値は、nstable::onInsertAfterの引数に渡されます。nstable内部では使用されません。

tableで再実装されています。

void onReadAfter ( )
protectedpure virtual

読み取りオペレーションが成功した際に呼び出されます。

tableで実装されています。

void onUpdateAfter ( int  beforeResult)
inlineprotectedvirtual

updateオペレーション内からそのオペレーションの実行後に呼び出されます。 update後に追加の処理を行いたい場合はこの関数をオーバーライドします。

戻り値
ここで返された値は、onUpdateAfterの引数に渡されます。nstable内部では使用されません。

tableで再実装されています。

int onUpdateBefore ( )
inlineprotectedvirtual

updateオペレーション内からそのオペレーションの実行前に呼び出されます。 update前に追加の処理を行いたい場合はこの関数をオーバーライドします。

tableで再実装されています。

bool onUpdateCheck ( eUpdateType  type)
inlineprotectedvirtual

updateオペレーション内からそのオペレーションの実行前に呼び出されます。 updateオペレーションの実行が必要かどうかを返します。 フィールドを比較して変更なければ不要 falseを返す最適化を行えます。

tableで再実装されています。

void open ( const _TCHAR *  uri,
char_td  mode = 0,
const _TCHAR *  ownerName = NULL 
)
inlineprotected

テーブルをオープンします。

引数
uriオープンするテーブルのuriを指定します。"\\server\folder\tablename" または"protocol://server/db?dbfile=tablename"と指定します。
modeTD_OPEN_NORMAL TD_OPEN_READONLY TD_OPEN_EXCLUSIVE TD_OPEN_READONLY_EXCLUSIVEのいずれかを指定します
ownerNameオーナーネームを指定します。
const uchar_td * posblk ( ) const
protected

ポジションブロックのアドレスを返します。 ポジションブロックはnstable::tdap()呼び出しでクライアントの状態を保持する 128バイトの領域です。

uint_td recordCount ( bool  estimate = true,
bool  fromCurrent = false 
)
inline

現在のレコード数を取得します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
estimateレコード数が見積もり数で良いかどうかを指定します。厳密な数を必要とする場合はfalseを指定します。 transactdにおいてエンジンがInnodbでfalseを指定すると、すべてのレコードをスキャンするためパフォーマンスの低下を招きます。通常はtrueを指定してください。 PSQLの場合は、このパラメータの値は無視され常に厳密なレコード数を高パフォーマンスで返します。
fromCurrentestimateがfalseのときに、現在のカレントレコード以降からのレコード数を調べるかどうかを指定します。このパラメータは nstableクラスの doRecordCount()の実装では何も行いません。 table::doRecordCount()の実装はフィルターを利用可能にしています。フィルターをセットしカレントを確立し estimate = false fromCurrent = true で開始するとフィルターにマッチするレコード数をカウントできます。
注釈
Transactdで、トランザクション中またはスナップショット中に、estimate = falseでこの関数を呼び出した場合、レコード数を数えるために多くのレコードがロックされます。この条件での呼び出しはなるべく行わないようにしてください。
ushort_td recordLength ( )

このテーブルのレコード長をサーバーから取得します。 実行結果はstat()で取得します。成功するとゼロが返ります。

int refCount ( ) const

インスタンスの参照数を返します。

void release ( )
inline

インスタンスの参照数カウンタを-1します。 参照数がゼロになると dekete thisを呼び出します。

このテーブルインスタンスのメモリを解放します。 テーブルがクローズされていない場合自動でクローズされます。

void seek ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードをsetKeyNumとキーバッファで指定された値のレコードに移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBias0、ROW_LOCK_X、ROW_LOCK_Sのいずれかの値を指定できます。
  • 0 このオペレーションで読み取ったレコードのレコードロックを取得しません。トランザクションとスナップショット中における読み取りはそれぞれの指定内容によります。
  • ROW_LOCK_X このオペレーションで読み取ったレコードに排他(X)行ロックを取得します。この値は、非トランザクション状態でのみ有効です。トランザクションまたはスナップショット時におけるロックは、 それぞれの指定内容によります。
  • ROW_LOCK_S このオペレーションで読み取ったレコードに排他(X)行ロックを取得します。この値は、トランザクション中で beginTrn() のbias値に、MULTILOCK_GAPを指定した場合のみ有効です。そのほかの状態でこの値を指定するとSTATUS_INVALID_LOCKTYPEエラーが返ります。

PSQLにおけるバイアス値はPSQLのマニュアルを参照してください。

void seekByBookmark ( bookmark_td bm,
ushort_td  lockBias = LOCK_BIAS_DEFAULT 
)
protected

カレントレコードをbmで指定したブックマークへ移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
bm事前に取得したブックマークを指定します。
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekByBookmark ( bookmark_td bm,
ushort_td  lockBias = LOCK_BIAS_DEFAULT 
)

カレントレコードをbmで指定したブックマークへ移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
bm事前に取得したブックマークを指定します。
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekByBookmark ( )

カレントレコードを内部にキャッシュされたブックマークへ移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。 あらかじめbookmark()を実行し成功していなければなりません。

void seekByPercentage ( )

カレントレコードを前回のgetPercentage(bm)で得られた百分率の位置に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。 移動した位置はおおよそであり正確な位置ではありません。

注釈
Transactdで、トランザクション中またはスナップショット中にこの関数を呼び出した場合、レコード数を数えるために多くのレコードがロックされます。この条件での呼び出しはなるべく行わないようにしてください。
void seekByPercentage ( percentage_td  pc)

カレントレコードをpcで指定された百分率の位置に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。 移動した位置はおおよそであり正確な位置ではありません。

注釈
Transactdで、トランザクション中またはスナップショット中にこの関数を呼び出した場合、レコード数を数えるために多くのレコードがロックされます。この条件での呼び出しはなるべく行わないようにしてください。
void seekFirst ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードをsetKeyNumで指定されたインデックス順の先頭に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekGreater ( bool  orEqual,
ushort_td  lockBias = LOCK_BIAS_DEFAULT 
)

カレントレコードをsetKeyNumとキーバッファで指定された値のレコードか より大きい最初のレコードに移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
orEqualキーバッファで指定された値があればそのレコードに移動するかを指定します。
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekLast ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードをsetKeyNumで指定されたインデックス順の最後に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekLessThan ( bool  orEqual,
ushort_td  lockBias = LOCK_BIAS_DEFAULT 
)

カレントレコードをsetKeyNumとキーバッファで指定された値のレコードか より小さい最初のレコードに移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
orEqualキーバッファで指定された値があればそのレコードに移動するかを指定します。
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekNext ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードをsetKeyNumで指定されたインデックス順の1つ後ろに移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void seekPrev ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードをsetKeyNumで指定されたインデックス順の1つ前に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void setAccessRights ( unsigned char  curd)
inline

このテーブルのアクセス制御(insert update delete read)をまとめてセットします。

void setBuflen ( uint_td  v)
inline

データバッファの確保された長さをセットします。

void setData ( void *  v)
inline

レコードバッファのポインタをセットします。

void setIsOpen ( bool  v)
protected

このテーブルがオープンされているかどうかを指定します。

void setKeyNum ( char_td  v)
inline

キー番号をセットします。

void setMode ( char_td  v)
protected
void setOwnerName ( const _TCHAR *  name,
char_td  enctype = 0 
)

オーナネームをテーブルに書き込みます。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
nameオーナーネームを指定します。
enctypePSQLでのみ有効です。詳しくはPSQLのsdkを参照してください。
void setShared ( )
protected

このインスタンスを共有インスタンスとしてマークします。 マークされると、 destroy()によって破棄されることはありません。

void setStat ( short_td  v)
inline

tdap呼び出しまたは処理の結果をセットします

void setTableid ( short  v)

このテーブル番号をセットします。 テーブル番号はこのクラスによって使用されることはありません。 継承したクラスによって使用されるラベルになります。

void setTimestampMode ( int  mode)

timestampまたはdatetime型で、レコードの追加日時(CURRENT_TIMESTAMP)またはレコードの更新日時(ON UPDATE CURRENT_TIMESTAMP) の属性を持つフィールドの日時の更新モードを設定します。

引数
modeTIMESTAMP_ALWAYS(1) insert または update 時にそのフィールドの値が何であれ必ずそのときの日時に更新します。 TIMESTAMP_VALUE_CONTROL(0) フィールドの値が、ゼロの場合にのみそのときの日時に更新します。
bool setUpdateConflictCheck ( bool  v)

update() del() の処理時に他のクライアントでの変更を検出するかどうか指定します。
検出を行うには、このテーブルに更新時にタイムスタンプを行うフィールドがあることが前提です。
競合を検出すると、 update() del() オペレーションは stat() にSTATUS_CHANGE_CONFLICT を返します。

引数
v競合を検出を行う場合はtrueを指定します。
戻り値
正常に検出可能な場合はtrueを返します。タイムスタンプフィールドが無い場合は falseを返します。
注釈
update() del() オペレーションの際に、タイムスタンプフィールドに前回の読み取り時の更新日時をセットしてください。 サーバーは、その値と現在の値を比較し異なっている場合はSTATUS_CHANGE_CONFLICTを返します。
MySQL 5.5.xはタイムスタンプ型でmicrosecondの値を保持しないため、1秒以内の前回更新を検出できません。MySQL 5.6以降、MariaDB 5.5以降は 正しく検出できます。
short_td stat ( ) const
inline

tdap呼び出しまたは処理の結果を返します。

_TCHAR * statMsg ( _TCHAR *  retbuf)
inline

最後に行った処理のエラーメッセージを取得します。

引数
[out]retbufエラーメッセージを受け取るバッファを指定します。バッファ長さは必ず512バイト以上 を確保してください。
戻り値
メッセージをコピーしたバッファのアドレスを返します。
void stats ( void *  databuffer,
uint_td  buflen,
bool  estimate = true 
)

tdap(TD_TABLE_INFO)オペレーションを実行します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
databuffer結果を受け取るバッファのアドレスを指定します。
buflendatabufferの長さを指定します。
estimateレコード数の取得について見積もり数かどうかを指定します。厳密な数を必要とする場合はfalseを指定します。 transactdにおいてエンジンがInnodbでfalseを指定すると、すべてのレコードをスキャンするためパフォーマンスの低下を招きます。通常はtrueを指定してください。 PSQLの場合は、このパラメータの値は無視され常に厳密なレコード数を高パフォーマンスで返します。
void stepFirst ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコード物理レコード順の最初のレコードに移動ししデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void stepLast ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコード物理レコード順の最後のレコードに移動ししデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void stepNext ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードを物理レコード順の1つ後ろに移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
void stepPrev ( ushort_td  lockBias = LOCK_BIAS_DEFAULT)

カレントレコードを物理レコード順の1つ前に移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。

引数
lockBiasロックバイアスの値と効果は seek() を参照してください。
short tableid ( ) const

このテーブルのテーブル番号を返します。

void tdap ( ushort_td  op)

Cのtdap呼び出しを実行します。特別なことがない限りこのメソッドは使用しないでください。 実行結果はstat()で取得します。成功するとゼロが返ります。

short_td tdapErr ( HWND  hWnd,
_TCHAR *  retbuf = NULL 
)
inline

最後に行った処理のエラーメッセージを取得します。

引数
hWnd親ウィンドウハンドルを指定します。ハンドルを指定すると自動でmessageBoxをにてエラーを表示します。
retbufメッセージを受け取るバッファを指定します。バッファは512以上を確保してください。
戻り値
エラーコードを返します。通常はstat()と同じ値ですが、STATUS_EOFとSTATUS_NOT_FOUND_TI の場合、STATUS_SUCCESSを返します。
static short_td tdapErr ( HWND  hWnd,
short_td  status,
const _TCHAR *  tableName = NULL,
_TCHAR *  retbuf = NULL 
)
static

エラーメッセージを取得します。

引数
hWnd親ウィンドウハンドルを指定します。ハンドルを指定すると自動でmessageBoxをにてエラーを表示します。
statusstat()で取得したステータスコードを指定します。
tableNametableNameの名前がある場合は指定します。
retbufエラーの内容を受け取るバッファを指定します。最低でも512バイトを確保してください。
static void throwError ( const _TCHAR *  caption,
short  statusCode 
)
static

bzs::rtl::exception例外をスローします。 受け取ったcaptionとstatusCodeから生成したより詳しいエラーメッセージを代入し てスローします。 catchハンドラでの取得は、bzs::rtl::getMsg(e)で取得できます。

static void throwError ( const _TCHAR *  caption,
nstable tb 
)
static

bzs::rtl::exception例外をスローします。 受け取ったcaptionとtbから生成したより詳しいエラーメッセージを代入し てスローします。 catchハンドラでの取得は、bzs::rtl::getMsg(e)で取得できます。

void unlock ( bookmark_td bm)

レコードロックを解除します。bmパラメータは、PSQLでのみ有効です。
bmで指定したブックマーク位置のレコードロックを解除します。

注釈
トランザクションとスナップショットの最中における unlock()の効果は、 nsdatabase::beginTrn()nsdatabase::beginSnapshot() を参照してください。
void unlock ( )

現在のレコードロックを解除します。

注釈
トランザクションとスナップショットの最中における unlock()の効果は、 nsdatabase::beginTrn()nsdatabase::beginSnapshot() を参照してください。
void update ( eUpdateType  type = changeCurrentCc)
inline

指定したレコードをデータバッファのイメージで更新します。

引数
type
  • changeCurrentCc 現在のカレントレコードをデータバッファのイメージで更新します。また キー値を更新した場合カレントレコードは新しいキー値の位置になります。(currecy change)
  • changeCurrentNcc changeCurrentCcと同様に現在のカレントレコードをデータバッファのイメージで更新します。 キー値が更新されても、カレントレコードは更新前の位置を維持します。(no currecy change)
  • changeInKey キー番号とデータバッファのキー値で指定されたレコードをデータバッファのイメージで更新します。 キー番号で指定されたキー値は変更できません。指定するキー番号は、重複を許可しないユニークキーでなければなりません。 このオペレーションは事前にカレントレコードを確立する必要はありません。

実行結果はstat()で取得します。成功するとゼロが返ります。

bool updateConflictCheck ( ) const

update() del() の処理時に他のクライアントでの変更を検出するかどうかを返します。

const _TCHAR * uri ( ) const
protected

このテーブルのuriを返します。

keylen_td writeKeyData ( )
inlineprotectedvirtual

インデックスを使用した読み取りオペレーション(seek find ...) の前に呼び出されます。 writeKeyDataをオーバーライドしてキーバッファにキー値をセットします。 デフォルト実装はゼロを返します。

戻り値
キーバッファの有効サイズを返します。

tableで再実装されています。

void writeRecordData ( )
protectedpure virtual

insert、updateオペレーション内からそのオペレーションの実行前に 呼び出されます。デフォルトではそれぞれnstable::onInsertBefore()、nstable::onUpdateBefore()から 呼び出されます。 継承したクラスはこの関数をオーバーライドしてrecordバッファにデータを書き 込む処理をします。

tableで実装されています。

メンバ詳解

union { ... }
uchar_td inkey = true
static

del() オペレーションのinkeyパラメータ用定数

uint_td m_buflen
protected

tdap呼び出しのデータバッファレングス

uchar_td m_curd

アクセス権全体を示します。

uint_td m_datalen
protected

tdap呼び出しのデータレングス

uchar_td m_delete

削除アクセス権があるかどうかを示します。

uchar_td m_insart

追加アクセス権があるかどうかを示します。

void * m_keybuf
protected

tdap呼び出しのキーバッファアドレス

keylen_td m_keybuflen
protected

tdap呼び出しのキーバッファレングス

keylen_td m_keylen
protected

tdap呼び出しのキーデータレングス

char_td m_keynum
protected

tdap呼び出しのキー番号

ushort_td m_op
protected

tdap呼び出しのオペレーション番号

void * m_pdata
protected

tdap呼び出しのデータバッファアドレス

uchar_td m_read

リードアクセス権があるかどうかを示します。

uchar_td m_reserverd

未使用です。将来のために予約されています。

short_td m_stat
mutableprotected

tdap呼び出しの戻り値

uchar_td m_write

更新アクセス権があるかどうかを示します。

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