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

データベースアクセス基本クラス (nocopyable) [詳解]

#include <nsDatabase.h>

+ nsdatabase の継承関係図

公開メンバ関数

 nsdatabase ()
 
void abortTrn ()
 
void beginSnapshot (short bias=CONSISTENT_READ, binlogPos *bpos=NULL)
 
void beginTrn (short bias=SINGLELOCK_NOGAP+NOWAIT_WRITE)
 
BTRCALLID_PTR btrvFunc ()
 
uchar_td * clientID () const
 
bool connect (const _TCHAR *uri, bool newConnection=false)
 
void createTable (fileSpec *pfs, uint_td len, const _TCHAR *uri, short_td mode=-1)
 
bool disconnect (const _TCHAR *uri=_T(""))
 
bool disconnectForReconnectTest ()
 
virtual void dropTable (const _TCHAR *uri)
 
int enableTrn () const
 
void endSnapshot ()
 
void endTrn ()
 
void getBtrVersion (btrVersions *versions, uchar_td *posblk)
 
char * getCreateViewSql (const _TCHAR *name, char *retbuf, uint_td *size)
 
bool isAssociate () const
 
virtual bool isOpened () const
 
bool isReconnected () const
 
bool isTransactdUri (const _TCHAR *uri)
 
bool isUseTransactd () const
 
bool localSharing () const
 
short lockWaitCount () const
 
short lockWaitTime () const
 
short openTableCount () const
 
void readDatabaseDirectory (_TCHAR *retbuf, uchar_td len)
 
bool reconnect ()
 
int refCount () const
 
virtual void release ()
 
void rename (const _TCHAR *oldUri, const _TCHAR *newUri)
 
void setLocalSharing (bool v)
 
void setLockWaitCount (short v)
 
void setLockWaitTime (short v)
 
void setUseLongFilename (bool value)
 
bool setUseTransactd ()
 
short stat () const
 
_TCHAR * statMsg (_TCHAR *retbuf)
 
void swapTablename (const _TCHAR *uri1, const _TCHAR *uri2)
 
short_td tdapErr (HWND hWnd, _TCHAR *retbuf=NULL)
 
ushort_td trxIsolationServer () const
 
ushort_td trxLockWaitTimeoutServer () const
 
_TCHAR * uri () const
 
bool uriMode () const
 
bool useLongFilename ()
 

静的公開メンバ関数

static bool enableAutoReconnect ()
 
static unsigned int execCodePage ()
 
static bool registerHaNameResolver (HANAME_RESOLVER_PTR func)
 
static void setEnableAutoReconnect (bool v)
 
static void setExecCodePage (unsigned int codepage)
 
static bool trnsactionFlushWaitStatus ()
 

静的公開変数類

static const int maxtables = 150
 

限定公開メンバ関数

virtual ~nsdatabase ()
 
void addref ()
 
bool checkAssociate ()
 
nsdatabaseclone () const
 
void doReconnect (nstable *tb)
 
virtual bool doReopenDatabaseSchema ()
 
bool findTable (nstable *tb)
 
virtual void * getExtendBufferForOpen (uint_td &size)
 
void internalRelease ()
 
nsdatabaseoperator= (const nsdatabase &)
 
void registerTable (nstable *tb)
 
void reset ()
 
void resetSnapshot ()
 
void setAssociate ()
 
virtual bool setUri (const _TCHAR *uri)
 
nstable ** tables ()
 
short tdap (ushort_td op, void *posb, void *data, uint_td *datalen, void *keybuf, keylen_td keylen, char_td keyNum)
 
short tdapEx (ushort_td op, void *posb, void *data, uint_td *datalen, void *keybuf, keylen_td keylen, char_td keyNum)
 
void unregisterTable (nstable *tb)
 

静的限定公開メンバ関数

static const char * toServerUri (char *buf, int buflen, const _TCHAR *src, bool trd)
 

限定公開変数類

BTRCALLID_PTR m_btrcallid
 
short m_stat
 

詳解

データベースアクセス基本クラス (nocopyable)

nsdatabaseは、主に以下の役割を持ちます。

  1. サーバーとの接続・切断
  2. トランザクションとスナップショットの開始・終了
  3. テーブルの作成・破棄

このクラスは、テーブルに関する詳細な情報を持ちません。詳細な情報を持つのはこのクラスを継承した database クラスです。
このクラスを直接生成することはほとんどありません。通常は database クラスを使用します。
このクラスはコピーできません。

構築子と解体子

~nsdatabase ( )
protectedvirtual

デストラクタ

コンストラクタ

関数詳解

void abortTrn ( )

トランザクションを中止します。 beginTrn()以降に行った変更はすべてロールバックされます。

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

addref ( )
protected

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

void beginSnapshot ( short  bias = CONSISTENT_READ,
binlogPos bpos = NULL 
)

スナップショットを開始します。スナップショットは読み取り専用のトランザクションです。 スナップショットは endSnapshot() で終了します。
スナップショット中にテーブルを閉じることはできません。 スナップショット中に nstable::close() を呼び出すと、STATUS_ALREADY_INSNAPSHOT エラーが返ります。 テーブルを閉じる前に必ずスナップショットを終了してください。

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

引数
[in]biasCONSISTENT_READ、CONSISTENT_READ_WITH_BINLOG_POS、MULTILOCK_GAP_SHARE、MULTILOCK_NOGAP_SHAREのいずれかの値を指定します。
  • CONSISTENT_READ InnoDBの REPEATABLE-READ consistent nonlocking readsによって、一貫性のある読み取りを保証します。 スナップショットを開始した時点でのバージョンを読み出します。他のトランザクションによって変更された内容が読み出されることはありません。 また、ロックフリーで高速にロック競合なしに読み取りが行えます。集計と表示などを行う際に使用します。
  • CONSISTENT_READ_WITH_BINLOG_POS CONSISTENT_READに加えて binpos パラメータにバイナリログのポジション情報を受け取ります。 このポジションは、binlogとデータベースのコミットをブロックした状態でバイナリログのポジションを取得します。次にスナップショットを開始して最後にコミットブロックを解除します。 コミットブロックはテーブルロックを伴なわないため、別のトランザクションが開始されていても取得できます。これでスナップショットのバイナリーログポジションを瞬時にずれのない状態で取得できます。
  • MULTILOCK_GAP_SHARE スナップショット中に読み取ったすべてのレコードを共有(S)ネクストキーロックします。 一度読み取ったレコードまたはレコード範囲はロックされ、スナップショット中は、常に同じ値が読み取れることが保証されます。 他のユーザーはそれらのレコードまたは範囲の変更・削除・追加は行えません。ロックの競合が発生しロックできなかった場合は、 stat() にSTATUS_LOCK_ERRORが返ります。
  • MULTILOCK_NOGAP_SHARE ナップショット中に読み取ったすべてのレコードを共有(S)行ロックします。 一度読み取ったレコードはロックされます。但し、クエリーにマッチしなかったレコードのロックは自動で解放されます。 他のユーザーはそれらのレコードの変更・削除は行えません。ロックの競合が発生しロックできなかった場合は、 stat() にSTATUS_LOCK_ERRORが返ります。
[out]bposbiasにCONSISTENT_READ_WITH_BINLOG_POSを指定する場合はbinlogPosのポインターを渡します。

bias値にMULTILOCK_NOGAP_SHAREを指定した場合、 nstable::unlock() によって直前に読み取ったレコードのロックを解除することができます。MULTILOCK_GAP_SHAREの場合ロック解除はできません。 nstable::unlock() を呼び出しても無視されます。 table::find() activeTable::read() activeTable::join() activeTable::outerJoin() でまとめて複数のレコードを読み取った場合、それらのロックを後でアンロックすることはできません。アンロックできるのは直前に読み取ったレコードのみです。細かくロック、アンロックの制御を行いたい場合は、 seek系オペレーションを使用してください。 この関数はPSQLでは使用できません。使用しても何の効果もありません。

注釈
CONSISTENT_READ_WITH_BINLOG_POSを使用すると、マスターをロック(FLUSH TABLE WITH READ LOCK)せずにレプリケーションをセットアップする ことができます。マスターにあるデータベースが1つでInnoDBを使用していることが条件です。以下はその手順です。
  1. スレーブを停止します。 (stop slave)
  2. スレーブでデータベースをドロップします。
  3. マスターでスナップショットをCONSISTENT_READ_WITH_BINLOG_POSバイアスで開始します。
  4. スレーブで空のデータベースを作成します。
  5. マスターのデータベースの内容をテーブルごとに(Trasnactd のAPIを使って)スレーブのデータベースにコピーします。
  6. スレーブでマスターポジションをスナップショット開始時に得られたポジション情報にします。
  7. スレーブを開始します。(start slave)
void beginTrn ( short  bias = SINGLELOCK_NOGAP + NOWAIT_WRITE)

トランザクションを開始します。トランザクション中に読み取ったレコードは、biasで指定した値に従ってレコードロックされます。 終了時に、 endTrn() または abortTrn() を呼び出すことで一連の更新をアトミックな処理にできます。

引数
biasSINGLELOCK_NOGAP、MULTILOCK_NOGAP、MULTILOCK_GAPのいずれかの値を指定できます。デフォルト値にあるNOWAIT_WRITEは PSQLでのみ有効でTransactdでは効果を持ちません。
  • SINGLELOCK_NOGAP テーブルごとに最後に読み取ったレコードのみ排他(X)行ロックします。 ロックされたレコードは、他のユーザーによって変更・削除は行えません。
  • MULTILOCK_NOGAP 読み取ったすべてのレコードを排他(X)行ロックします。 ロックされたレコードは、他のユーザーによって変更・削除は行えません。
  • MULTILOCK_GAP 読み取ったすべてのレコードを排他(X)ネクストキーロックします。 一度読み取ったレコードまたはレコード範囲はロックされ、トランザクション中は、常に同じ値が読み取れることが保証されます。 他のユーザーはそれらのレコードまたは範囲の変更・削除・追加は行えません。

ロックの競合が発生しロックできなかった場合は、 stat() にSTATUS_LOCK_ERRORが返ります。 実行結果はstat()で取得します。成功するとゼロが返ります。

注釈
  • bias値にMULTILOCK_GAPまたはMULTILOCK_NOGAPを指定した場合、seek系とstep系 読み取りオペレーションのバイアス値にROW_LOCK_Sを指定することができます。何も指定しない場合はデフォルトでROW_LOCK_Xです。ROW_LOCK_Sを指定すると、そのオペレーションで読み取ったレコードは、排他(X)行ロックに替えて共有(S)行ロックを取得します。但し、この共有(S)行ロックしたレコードを更新・削除することはできません。SINGLELOCK_NOGAPの場合、seek系とstep系 読み取りオペレーションのバイアス値はすべて無視されます。
  • bias値にSINGLELOCK_NOGAPまたは、MULTILOCK_NOGAPを指定した場合、 nstable::unlock() によって直前に読み取ったレコードのロックを解除することができます。MULTILOCK_GAPの場合ロック解除はできません。 nstable::unlock()を呼び出しても無視されます。 table::find() activeTable::read() activeTable::join() activeTable::outerJoin() でまとめて複数のレコードを読み取った場合、それらのロックを後でアンロックすることはできません。アンロックできるのは直前に読み取ったレコードのみです。細かくロック、アンロックの制御を行いたい場合は、 seek系オペレーションを使用してください。
  • トランザクション中に追加・更新・削除したすべてのレコードはbias値に応じたロックがされます。また、どのような方法によっても終了するまでロックは解除されません。

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

BTRCALLID_PTR btrvFunc ( )
inline

BTRCALLID関数のアドレスを返します。dllがロードできないまたはされていない場合はNULLを返します。

bool checkAssociate ( )
protected

このデータベースが、アソシエイトdatabaseかどうかを調べてそうである場合はfalseを返します。また m_statにSTATUS_NOSUPPORT_OPをセットします。

uchar_td * clientID ( ) const

このデータベースのクライアントIDを返します。

nsdatabase * clone ( ) const
protected

クローンオブジェクトを作成して返します。

bool connect ( const _TCHAR *  uri,
bool  newConnection = false 
)

このメソッドはPSQLの場合はLoginを実行します。詳しくはPSQLのマニュアルを参照してください。
以下はTransactdでの内容です。
uriで指定したサーバーへの接続を探し(無ければければ新しい接続を作成し)、その接続の参照カウンタを一つ増やします。 既にこの nsdatabase に接続があった場合は事前に接続の参照カウンタを一つ減らします(参照カウンタがゼロになったら切断します)。 既にデータベースが開かれていた場合は、接続に失敗し stat() は STATUS_DB_YET_OPEN を返します。 uriの内容は open()を参照してください。uriではスキーマテーブルの部分を省略することもできます。

例 "tdap://servername/database"

connectメソッドの呼び出しは必ずしも必要ではありません。 open()が呼び出された時点でネットワーク接続がなければ自動で connect処理が行われます。

引数
[in]uri接続するデータベースのuriを指定します。
[in]newConnectionこのスレッドで使用している接続とは別に新しい接続を作成する場合はtrueを指定します。falseを指定すると、既にそのデータベースに接続がある場合それを共有します。
戻り値
成功するとtrueで返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。

ネットワーク接続はスレッドごとに別の接続が張られます。 コネクションプールを作成したい場合、newConnectionでtrueを指定するとあらかじめ別々のコネクションを持つ databaseオブジェクトを持つことができます。

void createTable ( fileSpec pfs,
uint_td  len,
const _TCHAR *  uri,
short_td  mode = -1 
)

uriで指定されたテーブルルpfsの定義に基づいて作成します。このテーブルはスキーマを持たないテーブルです。 mysqlへのSQLでアクセスはダミーのフィールドを通じてのみアクセスできます。 このメソッドで作成するテーブルは、SQLから利用を行わないテーブルのみ使用します。

bool disconnect ( const _TCHAR *  uri = _T(""))

このメソッドはPSQLの場合はLogoutを実行します。詳しくはPSQLのマニュアルを参照してください。
以下はTransactdでの内容です。
このデータベースが使用している接続の参照カウントを一つ減らします。 接続の参照数がゼロになるとサーバーとのネットワーク接続を切断します。

disconnectメソッドの呼び出しは必ずしも必要ではありません。 close()が呼び出された時点で接続があれば自動で disconnect処理が行われます。

引数
[in]uri使用されません。 空の文字列を指定します。
戻り値
成功するとtrueで返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。
bool disconnectForReconnectTest ( )

現在のネットワーク接続を強制的に切断します。切断に伴うリカバリー処理は一切ありません。
この切断処理はネットワーク障害をエミュレートします。
このメソッドは通常のアプリケーションでは使用しません。 reconnect() のテストのためにのみあります。

戻り値
成功するとtrueで返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。
void doReconnect ( nstable tb)
protected

tbで指定されたテーブルを再接続します。

virtual bool doReopenDatabaseSchema ( )
inlineprotectedvirtual

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

void dropTable ( const _TCHAR *  uri)
virtual

uriで指定されたテーブルを削除します。 実行結果はstat()で取得します。成功するとゼロが返ります。

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

bool enableAutoReconnect ( )
inlinestatic

ネットワークエラーが発生した際に、自動再接続処理を行うかどうかを返します。

bool enableTrn ( ) const

現在トランザクションが開始されているかどうかを返します。

void endSnapshot ( )

スナップショットを終了します。

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

void endTrn ( )

トランザクションをコミットします。

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

unsigned int execCodePage ( )
static

setExecCodePage()で指定された実行環境で使用するマルチバイト文字コードのコードページを取得します。

bool findTable ( nstable tb)
protected

tbで指定されたテーブルを、このデータベースオブジェクトで開かれたテーブルリストから探して有効であればtrueを返します。

void getBtrVersion ( btrVersions versions,
uchar_td *  posblk 
)

posblkで指定したテーブルのサーバーとクラインアントモジュールのバージョンを取得します。

引数
[out]versionsbtrVersions[3] 構造体の先頭アドレスを指定します。必ずsizeof(btrVersions) × 3以上のサイズを確保してください。
posblk既に開いているテーブルの posblk()パラメータを渡します。

実行が成功すると先頭の構造体にクライアントモジュールのバージョンが、3番目の構造体にサーバーモジュールのバージョンが返されます。 PSQLでローカルエンジンがある場合は2番目の構造体にバージョンが返されます。

取得が成功したかどうかは stat()で取得します。成功するとゼロが返ります。

char * getCreateViewSql ( const _TCHAR *  name,
char *  retbuf,
uint_td *  size 
)

nameで指定したviewの生成 SQL文を取得します。
Trnasactdではviewを扱いませんが、データベースのコピーを行う際に既存のviewもコピーしたい場合があります。 そのような用途のために、viewを生成SQLを取得できます。

引数
name取得したい viewの名前を指定します。
rebuf結果を受け取るバッファの先頭アドレスを指定します。
size結果を受け取るバッファの長さのアドレスを指定します。
戻り値
成功すると、utf8でエンコードされたview の生成文がrebufに返ります。またその長さがsizeに返されます。 バッファの長さが十分で無い場合は、 stat() にSTATUS_BUFFERTOOSMALLが返り、size に必要な長さが返されます。
void * getExtendBufferForOpen ( uint_td &  size)
inlineprotectedvirtual

テーブルをオープンする際に拡張情報を受け取るバッファを返します。

引数
[out]sizeバッファのサイズを返します。
戻り値
バッファの先頭アドレスを返します。
internalRelease ( )
inlineprotected

インラインで nsdatabase::release() を呼び出します。

bool isAssociate ( ) const

このデータベースが、 database::createAssociate() によって生成されたアソシエイトdatabaseかどうかを返します。

bool isOpened ( ) const
inlinevirtual

データベースがオープンされているかどうかを返します。

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

bool isReconnected ( ) const

このデータベースが再接続されたかどうかを返します。
この値がtrueの場合、table::setQuery() でサーバーにキャッシュされたクエリーが無効になり、 非サーバーキャッシュクエリーとして実行されます。

bool isTransactdUri ( const _TCHAR *  uri)

uriで指定したURIはtransactdを使用するプロトコル tdap:://かどうかを返します。

bool isUseTransactd ( ) const

m_btrcallidの関数アドレスは、trnsctcl.dllのBTRVCALLID関数のアドレスかどうかを返します。

bool localSharing ( ) const

PSQLの6.15以前のローカルエンジンにおいて、ファイル共有モードを使用するかどうかを返します。

short lockWaitCount ( ) const

トランザクション内でレコードを更新する際に対象のレコードがロックされていた場合、更新の再試行を試みる回数を返します。

short lockWaitTime ( ) const

トランザクション内でレコードを更新する際に対象のレコードがロックされていた場合、更新の再試行を試みる際にwaitする時間をミリ秒で返します。

short openTableCount ( ) const

現在開かれているテーブル数を返します。

nsdatabase & operator= ( const nsdatabase )
protected

コピーコンストラクタは実装されません。

void readDatabaseDirectory ( _TCHAR *  retbuf,
uchar_td  len 
)

データベースのディレクトリをサーバーに問い合わせてretbufに返します。

引数
[out]retbuf問い合わせ結果を受け取るバッファのアドレスを指定します。
[in]lenretbufで指定したバッファの長さを指定します。
bool reconnect ( )

一度接続が正常に成功したコネックションが、ネットワーク障害などによってエラーを返した際に再接続 を行います。

戻り値
成功するとtrueで返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。

このメソッドを呼び出すと、以下の処理が順行われます。

  • 現在の接続を強制切断。
  • 新しい接続の開始。
  • データベースが保持するtableオブジェクトのテーブルをオープン。
  • 各テーブルのカレントレコード(ポジショニング)の再確立とレコードロック(直前のオペレーションがロック付の場合)。
  • トランザクション状態など、強制切断によって変更された状態のリセット。
注釈
再接続されると、table::setQuery() でサーバーにキャッシュされたクエリーが無効になります。 その後のそのクエリーはすべて非キャッシュとして実行されます。そのため、わずかにパフォーマンスに違いが出るかも知れません。
int refCount ( ) const

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

bool registerHaNameResolver ( HANAME_RESOLVER_PTR  func)
static

tdclc_xxライブラリのネットワーク層に仮想ホスト名に対する名前解決のための関数を登録します。 登録を解消する場合はfuncにNULLをセットして呼び出します。
この関数はC/C++言語からのみ使用可能で、PHP、Ruby、ComなどC++ライブラリのラッパーからは使用できません。
HANAME_RESOLVER_PTRのプロトタイプは const char* (__STDCALL* HANAME_RESOLVER_PTR)(const char* vhost, const char* port, char* retBuf, unsigned int& opt); で、引数vhostで指定された仮想ホスト名に対する実ホスト名をretBufにコピーして返す関数を指定します。retBufのサイズはMAX_PATH(260)の固定サイズです。
optは入力・出力両方で使用します。
以下はopt引数の説明です。

  • HST_OPTION_CLEAR_CACHE [in] このコールバック呼び出しは再接続のための呼び出しです。実ホスト名をキャッシュしている場合は、キャッシュをクリアして再解決した上で実ホスト名を返してください。
  • CL_OPTION_CHECK_ROLE [out] tdclc_xxライブラリのネットワーク層に相手のサーバーが指定したロールを持つかどうかを検査するよう指示します。もし役割が異なる場合接続は失敗し、ERROR_TD_INVALID_SERVER_ROLEエラーを返します。
  • HST_OPTION_ROLE_MASTER [out] retBufのホストはマスターの役割を持つことを明示します。CL_OPTION_CHECK_ROLEと組み合わせて使用します。
  • HST_OPTION_ROLE_SLAVE [out] retBufのホストはスレーブの役割を持つことを明示します。CL_OPTION_CHECK_ROLEと組み合わせて使用します。
void registerTable ( nstable tb)
protected

tbで指定されたテーブルをこのデータベースオブジェクトが管理するオープンテーブルリストに加えます。

release ( )
virtual

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

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

void rename ( const _TCHAR *  oldUri,
const _TCHAR *  newUri 
)

oldUriで指定されたテーブルの名前をnewUriで指定された名前に変更します。 実行結果はstat()で取得します。成功するとゼロが返ります。

void reset ( )
protected

データベース接続をリセットします。開いているテーブルはすべて閉じられます。 使用していた接続が他のクライアントに使用されていなければ、データベースの接続が切断されます。

void resetSnapshot ( )
protected

スナップショットカウンターを強制的に1にし、endSnapshot()を呼び出してスナップショットを強制終了させます。

void setAssociate ( )
protected

このデータベースがアソシエイトdatabaseであるとマークします。

void setEnableAutoReconnect ( bool  v)
inlinestatic

ネットワークエラーが発生した際に、自動再接続処理を行うかどうかを指定します。
この設定値は registerHaNameResolver() によっても設定されます。 有効な関数が登録された場合場合は true 、NULLが指定された場合はfalseが設定されます。 registerHaNameResolver() はTHNRによって使用されますので、THNRを使用している場合はこの関数を呼び出さないでください。

注釈
THNRについては、haNameResolver を参照してください。
void setExecCodePage ( unsigned int  codepage)
static

実行環境で使用するマルチバイト文字コードのコードページを指定します。

void setLocalSharing ( bool  v)

PSQLの6.15以前のローカルエンジンにおいて、ファイル共有モードを使用するかどうかを設定します。

引数
vファイル共有モードを有効にする場合trueを指定します。
void setLockWaitCount ( short  v)

トランザクション内でレコードを更新する際に対象のレコードがロックされていた場合、更新の再試行を試みる回数を設定します。

void setLockWaitTime ( short  v)

トランザクション内でレコードを更新する際に対象のレコードがロックされていた場合、更新の再試行を試みる際にwaitする時間をミリ秒で設定します。

bool setUri ( const _TCHAR *  uri)
protectedvirtual

データベーススキーマのuriをセットします。

void setUseLongFilename ( bool  value)

windowsで長いファイル名を使用するかどうかを指定します。 linuxではこの値は無視されます。 デフォルト値は、nsdatabaseのコンストラクタでサーバーのバージョンを取得して自動でセットされます。
古いP.SQLを除いてtrueにセットされます。

bool setUseTransactd ( )

このデータベースでtransactdを使用する場合に呼び出します。 この関数が呼ばれると、trnsctcl.dllをロードして m_btrcallidにtrnsctcl.dllのBTRVCALLID関数のアドレスをセットします。 以降tdap呼び出しはtransactdに送られます。

short stat ( ) const

各種オペレーションの実行結果を返します。成功するとセロを返します。

_TCHAR * statMsg ( _TCHAR *  retbuf)
inline

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

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

uri1で指定されたテーブルの名前をuri2で指定された名前と入れ替えます。 実行結果はstat()で取得します。成功するとゼロが返ります。

nstable ** tables ( )
protected

このデータベースによって開かれているテーブルリストへのポインタを返します。

short tdap ( ushort_td  op,
void *  posb,
void *  data,
uint_td *  datalen,
void *  keybuf,
keylen_td  keylen,
char_td  keyNum 
)
inlineprotected

tdclc_xxライブラリのtdap呼び出しを実行します。 実行結果はstat()で取得します。成功するとゼロが返ります。 この関数は内部で再接続処理が行われることはありません。

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

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

引数
hWnd親ウィンドウハンドルを指定します。ハンドルを指定すると自動でmessageBoxをにてエラーを表示します。
[out]retbufエラーメッセージを受け取るバッファを指定します。バッファ長さは必ず512バイト以上 を確保してください。
戻り値
エラーコードを返します。通常はstat()と同じ値ですが、STATUS_EOFとSTATUS_NOT_FOUND_TI の場合、STATUS_SUCCESSを返します。
short tdapEx ( ushort_td  op,
void *  posb,
void *  data,
uint_td *  datalen,
void *  keybuf,
keylen_td  keylen,
char_td  keyNum 
)
protected

tdclc_xxライブラリのtdap呼び出しを実行します。 実行結果はstat()で取得します。成功するとゼロが返ります。 この関数は内部でエラーの内容と設定条件によって再接続処理を行います。

static const char * toServerUri ( char *  buf,
int  buflen,
const _TCHAR *  src,
bool  trd 
)
staticprotected

srcで指定したuriをtransactdサーバーに渡すuriに変換します。transactdでは uriをUTF8で受け取るためあらかじめUTF8に変換します。

引数
buf変換後のuriを受け取るバッファの先頭アドレスを指定します。
buflenbufで指定したバッファの長さを指定します。
src変換前(CP_ACP)のuriを渡します。
trd現在のコンテキストがtransactdをターゲットにしているかどうかを指定します。
戻り値
bufで指定したアドレスを返します。
static bool trnsactionFlushWaitStatus ( )
static

トランザクションの完了から8秒以下の場合trueを返します。 mobile PCなどでスタンバイに移行する際データベースにデータがフラッシュされるまでスタンバイをwaitしたほうが良い事があります。 そのような場合にスタンバイメッセージとトラップしてこの関数を呼び出します。 この関数はWindowsでのみ有効です。

ushort_td trxIsolationServer ( ) const

サーバーのトランザクション分離レベルの設定値 ( transactd_transaction_isolation )を返します。 返された値の意味は以下の通りです。

  • 0 SRV_ISO_READ_UNCOMMITED
  • 1 SRV_ISO_READ_COMMITED
  • 2 SRV_ISO_REPEATABLE_READ
  • 3 SRV_ISO_SERIALIZABLE
ushort_td trxLockWaitTimeoutServer ( ) const

サーバーのロックタイムアウトの設定値 ( transactd_lock_wait_timeout )の秒数を返します。

void unregisterTable ( nstable tb)
protected

registerTable() で行った登録を解除します。

_TCHAR * uri ( ) const

このデータベースのuriを返します。

bool uriMode ( ) const

データベースの指定が btrv:// または tdap://で始まるuriで指定されているかどうかを返します。 PSQLのデータベースの場合 c:\database\schemaNameなどのファイルシステムの指定方法もあるため それと区別したいときに使用します。

bool useLongFilename ( )

windowsで長いファイル名を使用するかどうかを返します。

メンバ詳解

BTRCALLID_PTR m_btrcallid
protected

BTRCALLID関数のアドレスを保持します。

short m_stat
protected

このクラスに対する操作の結果を表します。

static const int maxtables = 150
static

1つのインスタンスで管理できるテーブルの最大数の定数。 デフォルトでは50に設定されています。

1つのデータベースで同時にオープンできるテーブルの最大数

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