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

データベースアクセスクラス [詳解]

#include <database.h>

+ database の継承関係図

公開メンバ関数

short aclReload ()
 
short assignSchemaData (const dbdef *src)
 
bool autoSchemaUseNullkey () const
 
databaseclone ()
 
void close (bool withDropDefaultSchema=false)
 
short continuous (char_td op=TD_BACKUP_START, bool inclideRepfile=false)
 
void convertTable (short tableIndex, bool turbo, const _TCHAR *ownerName=NULL)
 
short copyTableData (table *dest, table *src, bool turbo, short keyNum=-1, int maxSkip=-1)
 
void create (const _TCHAR *uri, short type=TYPE_SCHEMA_BDF)
 
databasecreateAssociate ()
 
bool createTable (const char *utf8Sql)
 
bool createTable (short fileNum, const _TCHAR *uri=NULL)
 
dbdefdbDef () const
 
virtual int defaultAutoIncSpace () const
 
void drop (const _TCHAR *uri=NULL)
 
void dropTable (const _TCHAR *tableName)
 
bool execSql (const char *utf8Sql)
 
bool existsTableFile (short tableIndex, const _TCHAR *ownerName=NULL)
 
void getBtrVersion (btrVersions *versions)
 
char * getSqlStringForCreateTable (const _TCHAR *tableName, char *retbuf, uint_td *size)
 
bool isOpened () const
 
char_td mode () const
 
const copyDataFn onCopyData () const
 
const deleteRecordFn onDeleteRecord () const
 
bool open (const _TCHAR *uri, short schemaType=0, short mode=-2, const _TCHAR *dir=NULL, const _TCHAR *ownerName=NULL)
 
tableopenTable (short fileNum, short mode=TD_OPEN_NORMAL, bool autoCreate=true, const _TCHAR *ownerName=NULL, const _TCHAR *uri=NULL)
 
tableopenTable (const _TCHAR *tableName, short mode=0, bool autoCreate=true, const _TCHAR *ownerName=NULL, const _TCHAR *uri=NULL)
 
void * optionalData () const
 
virtual void release ()
 
const _TCHAR * rootDir () const
 
void setAutoSchemaUseNullkey (bool v)
 
void setOnCopyData (const copyDataFn v)
 
void setOnDeleteRecord (const deleteRecordFn v)
 
void setOptionalData (void *v)
 
void setRootDir (const _TCHAR *directory)
 
void setTableReadOnly (bool value)
 
bool tableReadOnly () const
 
- 基底クラス 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 ()
 
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
 
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
 
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 int compatibleMode ()
 
static databasecreate ()
 
static void destroy (database *db)
 
static void setCompatibleMode (int mode)
 
- 基底クラス nsdatabase に属する継承静的公開メンバ関数
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 CMP_MODE_BINFD_DEFAULT_STR = 2
 
static const int CMP_MODE_MYSQL_NULL = 1
 
static const int CMP_MODE_OLD_ALL = 2
 
static const int CMP_MODE_OLD_BIN = 3
 
static const int CMP_MODE_OLD_NULL = 0
 
- 基底クラス nsdatabase に属する継承静的公開変数類
static const int maxtables = 150
 

限定公開メンバ関数

 database ()
 
virtual ~database ()
 
virtual void doClose ()
 
virtual void doConvertTable (short tableIndex, bool turbo, const _TCHAR *ownerName)
 
virtual void doOpen (const _TCHAR *uri, short type, short mode, const _TCHAR *username)
 
virtual bool doReopenDatabaseSchema ()
 
virtual char * getContinuousList (int option)
 
virtual void onCopyDataInternal (table *tb, int recordCount, int count, bool &cancel)
 
virtual bool onOpenAfter ()
 
virtual bool onTableOpened (table *tb, short fileNum, short mode, bool isCreated)
 
databaseoperator= (const database &)
 
void setLockReadOnly (bool v)
 
- 基底クラス nsdatabase に属する継承限定公開メンバ関数
virtual ~nsdatabase ()
 
void addref ()
 
bool checkAssociate ()
 
nsdatabaseclone () const
 
void doReconnect (nstable *tb)
 
bool findTable (nstable *tb)
 
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)
 

その他の継承メンバ

- 基底クラス nsdatabase に属する継承静的限定公開メンバ関数
static const char * toServerUri (char *buf, int buflen, const _TCHAR *src, bool trd)
 
- 基底クラス nsdatabase に属する継承限定公開変数類
BTRCALLID_PTR m_btrcallid
 
short m_stat
 

詳解

データベースアクセスクラス

このクラスは nsdatabase を継承します。nsdatabase の機能に加えて具体的なテーブル情報を持って処理を行います。
このクラスのコピーは clone()メソッドを使用します。 生成は database::create()、破棄は database::destroy()を呼び出します。 特別な処理を加えたい場合は database::create()を行っているdatabaseFactry.cppを 変更してdatabaseのスーパークラスを生成します。動的に生成するオブジェクトを変更することには未対応です。

transactdではmysqlのテーブル情報とは別にスキーマ情報をテーブルに持ちます。 通常のこの内容は一致している必要があります。transactdにてスキーマ情報を生成しテーブルを作成すると 一致した内容が保証されます。 また、既存のmysqlのデータベースを初めてtransactdから使用するときは、スキーマ名に"transactd_schema"を指定すると自動で この名前のスキーマテーブルを生成します。
アソシエイトdatabaseを使うと同じサーバー内の異なるデータベースにまたがって、トランザクションやスナップショットを使用することができます。 アソシエイトdatabaseについては createAssociate() を参照してください。

構築子と解体子

database ( )
protected

コンストラクタは呼び出しできません。代わりに database::create()を使用して生成します。

~database ( )
protectedvirtual

デストラクタは呼び出しできません。代わりに database::destroy()を使用して解放します。

関数詳解

short aclReload ( )

データベース名 mysql に記録されたユーザー情報とセキュリティー情報をサーバープラグイン内で再読取りします。
mysqlデータベースのuserテーブルなどをtransactdを使って変更した場合、この関数を呼び出すことでその情報が有効になります。

short assignSchemaData ( const dbdef src)

srcで指定したスキーマテーブルの情報をこのデータベースのスキーマテーブルにコピーして保存します。
データベースは事前にオープンされてなければなりません。
戻り値はスキーマテーブルへの読み取りまたは保存処理のtable::stat()の値です。成功すると0を返します。

bool autoSchemaUseNullkey ( ) const

open() でスキーマ名に"transactd_schema"を指定し自動でスキーマを生成する際に、キーフィールドが NULLを許可する場合、そのキーをNULLキーとして生成するかどうかを返します。

database * clone ( )

databaseのクローンを作成して返します。生成されたオプジェクトは必ず database::destroy()で解放してください。 クローンは deDef()で返される dbdefオブジェクトを共有します。クローンを別スレッドで使用するには dbdefに対するアクセスをシリアライズする必要があります。安全に複数スレッドで使用するには cloneでなく database::create()を使用してそれぞれでデータベースをオープンするようにしてください。
また、共有されたdbdefオブジェクトが内部的に使用するdatabaseオブジェクトは元のdatabaseオブジェクトです。 dbdefによるスキーマ変更などを行う際に、元のdatabaseオブジェクトが破棄されていると無効なポインター参照が発生します。

void close ( bool  withDropDefaultSchema = false)

データベースをクローズします。 開いているテーブルがあればすべてクローズし、そのメモリを解放します。 未完了のトランザクションがあった場合はコミットされます。
ネットワーク接続は切断されます。

引数
withDropDefaultSchema自動生成されたスキーマ"transactd_schema"を削除(ドロップ)するかどうかを指定します。 SQLのコマンドでテーブルの定義を変更した場合、transactd用のスキーマも変更する必要があります。 その場合、既存の"transactd_schema"をドロップし、再度 open() にて自動作成することでtransactd用のスキーマを最新の状態にすることができます。

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

注意
データベースをクローズすると、保持していたテーブルなどへの参照はすべて無効になります。無効な状態でテーブルのメソッドなどへアクセスしようとすると、無効なポインタ操作の例外が発生します。
static int compatibleMode ( )
static

setCompatibleMode() で指定した値を返します。

short continuous ( char_td  op = TD_BACKUP_START,
bool  option = false 
)

PSQLのcontinuousオペレーションを実行します。サーバーがtransactdの場合は使用できません。 continuousオペレーションについてはPSQLのマニュアルを参照してください。

引数
[in]opTD_BACKUP_STARTまたは TD_BACKUP_ENDを指定します。それぞれcontinuousオペレーションの開始または終了します。
[in]option現在未使用です。常にfalseを指定してください。
void convertTable ( short  tableIndex,
bool  turbo,
const _TCHAR *  ownerName = NULL 
)

テーブルのすべての行をtableIndexで指定された新しいスキーマに変換します。元のスキーマは dbdef::pushBackup() を使って事前に保存しておく必要があります。 実行結果は stat()で取得します。成功するとゼロが返ります。

引数
[in]tableIndexコピー先のテーブル番号を指定します。
[in]turbotrueを指定するとコピーの際に、srcのレコードイメージをそのままdestにコピーし高速に処理します。 falseを指定すると、フィールドごとにsrcの内容を文字列化してからdestの同名フィールドに値をセットしてコピーします。 destとsrcのスキーマが異なる場合はこちらを選択してください。フィールド名が同じであれば型が異なっても正しくコピーできます。
[in]ownerNamePSQLのデータベースの際に、テーブルのオーナーネームを指定します。
short copyTableData ( table dest,
table src,
bool  turbo,
short  keyNum = -1,
int  maxSkip = -1 
)

destで指定したテーブルにsrcで指定したテーブルのすべての行をコピーします。destは空のテーブルを指定します。

引数
[in]destコピー先のテーブルを指定します。
[in]srcコピー元のテーブルを指定します。
[in]turbotrueを指定するとコピーの際に、srcのレコードイメージをそのままdestにコピーし高速に処理します。 falseを指定すると、フィールドごとにsrcの内容を文字列化してからdestの同名フィールドに値をセットしてコピーします。 destとsrcのスキーマが異なる場合はこちらを選択してください。フィールド名が同じであれば型が異なっても正しくコピーできます。
[in]keyNumsrcでの読み取りに使用するキー番号を指定します。-1を指定すると物理順に読み取ります。
[in]maxSkip読み取りエラーがあった場合にそのレコードをスキップして次に進むかどうかを指定します。スキップを許可する場合は-1を指定します。 それ以外の値を指定するとスキップしません。
戻り値
正常に終了するとゼロが返ります。失敗するとゼロ以外が返ります。戻り値の内容は stat()で取得できるものと同一です。
void create ( const _TCHAR *  uri,
short  type = TYPE_SCHEMA_BDF 
)

スキーマテーブルを作成します。transactdの場合、サーバーにデータベースが作成されていなければデータベースも作成します。 transactdではmysqlやPSQLの1つデータベースに対して複数のスキーマテーブルを作成することができます。 必要なテーブルのみ列挙したスキーマテーブルを作成し、他のテーブルにアクセスできないようにするなどといった ことができます。

引数
[in]uri作成するスキーマテーブルのuriを指定します。uriの内容は open()を参照してください。
[in]type作成するスキーマテーブルの種類を指定します。
  • TYPE_SCHEMA_BDF (short)0 BDF形式
  • TYPE_SCHEMA_DDF(short)1 DDF形式 Transactdの場合は BDF形式を指定してください。

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

static database * create ( )
static

データベースオブジェクトを生成して返します。CインターフェースのDLL(so)のロードに失敗するとNULLが返ります。

database * createAssociate ( )

アソシエイトdatabaseを作成して返します。
アソシエイトdatabaseは、コネクションとトランザクションを親データベースと共有します。アソシエイトdatabaseを使うと同じサーバー内の異なるデータベースにまたがって、トランザクションやスナップショットを使用することができます。
接続、切断、トランザクションやスナップショットの制御はすべて親データベースにて行います。 アソシエイトdatabaseでは行えません。それらを行う関数を呼び出すとSTATUS_NOSUPPORT_OPを返します。

db->open("tdap://localhost/db1?dbfile=test.bdf")
database* dba = db->createAssociate();
dba->open("tdap://localhost/db2?dbfile=test.bdf");
table* tb = db->openTable("db1_table1");
table* tb2 = dba->openTable("db2_table1");
db->beginTrn();
...
db->endTrn();

現在のデータベースがアソシエイトdatabaseかどうかを調べるには nsdatabase::isAssociate() を使用します。

bool createTable ( const char *  sql)

SQL文でテーブルを作成します。 事前にデータベースがオープンされていなければなりません。
この方法で作成したテーブルはスキーマテーブルには追加されません。

引数
[in]sqlテーブルを作成するSQL文を指定します。SQL文はutf8でエンコードされた文字列を渡します。
戻り値
成功するとtrueが返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。
注釈
この方法で作成したテーブルにアクセスするには、スキーマを指定しないでデータベースをオープンするか、スキーマにこのテーブルの情報 を加える必要があります。
bool createTable ( short  fileNum,
const _TCHAR *  uri = NULL 
)

指定したファイル番号のテーブルを作成します。

引数
[in]fileNumテーブル番号を指定します。
[in]uriスキーマ情報と現在のディレクトリ情報を使用せずに、テーブルの位置(uri)を直接指定したい場合に使用します。
戻り値
成功するとtrueが返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。
dbdef * dbDef ( ) const

このデータベースの定義を示す dbdefオブジェクトを取得します。 データベースがオープンされていない場合はNULLを返します。

int defaultAutoIncSpace ( ) const
inlinevirtual

行の追加でフィールド値のオートインクリメントをサーバーによるものでなくクライアント側で実装する場合に使用します。 通常このメソッドは使用しません。

static void destroy ( database db)
static

データベースオブジェクトの使用しているメモリを解放します。 開いているテーブルがあればすべてクローズされメモリを解放します。 未完了のトランザクションがあった場合はコミットされます。

void doClose ( )
protectedvirtual

close()を実装します。詳しくは close()を参照してください。

void doConvertTable ( short  tableIndex,
bool  turbo,
const _TCHAR *  ownerName = NULL 
)
protectedvirtual

convertTable()を実装します。詳しくは convertTabl()を参照してください。

void doOpen ( const _TCHAR *  uri,
short  type,
short  Mode,
const _TCHAR *  username 
)
protectedvirtual

open()を実装します。詳しくは open()を参照してください。

virtual bool doReopenDatabaseSchema ( )
protectedvirtual

nsdatabaseを再実装しています。

void drop ( const _TCHAR *  uri = NULL)

現在開かれているデータベースベースをドロップします。データベースが開かれていない場合は、uriで指定したデータベースをドロップします。 drop()はスキーマテーブルとすべてのテーブルを削除します。すべてのテーブルとはスキーマに列挙されたテーブル だけでなくmysqlで管理されたデータベースの単位でドロップされます。

引数
[in]uri削除するデータベースのuriを指定します。uriの内容は open()を参照してください。ここで指定するuriには、スキーマテーブル名は不要です。

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

void dropTable ( const _TCHAR *  tableName)
virtual

tableNameで指定したテーブルをドロップします。他にテーブルを使用中のユーザーがいると失敗します。 実行結果は stat()で取得します。成功するとゼロが返ります。

nsdatabaseを再実装しています。

bool execSql ( const char *  sql)
inline

指定したSQL文を実行します。使用できるSQL文は、成功/不成功の結果を返すもののみです。結果セットを返すものは使用できません。 事前にデータベースがオープンされていなければなりません。

引数
[in]sqlSQL文を指定します。SQL文はutf8でエンコードされた文字列を渡します。
戻り値
成功するとtrueが返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。
注釈
SQL文の内容がglobalに作用するものであっても、いずれかのデータベースがオープンされていなければなりません。
bool existsTableFile ( short  tableIndex,
const _TCHAR *  ownerName = NULL 
)

tableIndexで指定したテーブルが作成されているかどうかを返します。

引数
[in]tableIndex存在を確認するテーブル番号。
[in]ownerNamePSQLのデータベースの際に、テーブルのオーナーネームを指定します。
戻り値
テーブルが存在する場合はtrueが返ります。
void getBtrVersion ( btrVersions versions)

現在開いているデータベーススキーマのあるサーバーとクラインアントモジュールのバージョンを取得します。

引数
[out]versionsbtrVersions[3] 構造体の先頭アドレスを指定します。必ずsizeof(btrVersions) × 3以上のサイズを確保してください。 実行が成功すると先頭の構造体にクライアントモジュールのバージョンが、3番目の構造体にサーバーモジュールのバージョンが返されます。 PSQLでローカルエンジンがある場合は2番目の構造体にバージョンが返されます。

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

char * getContinuousList ( int  option)
protectedvirtual

continuous() の中でcontinuousするテーブルリストを取得します。 カンマ区切りでフルパスのファイル名リストを返します。

引数
[in]optionゼロを指定します。現在のところこの値は使用されません。
char * getSqlStringForCreateTable ( const _TCHAR *  tableName,
char *  retbuf,
uint_td *  size 
)

tableNameで指定したテーブルの定義から、テーブルを作成するSQL文を取得します。
database::createTable() でテーブルが正しく作成されなかった際に、このメソッドで得られたSQL文にて原因をMySQLコマンド ラインクライアントなどから解明することができます。

引数
tableNameCREATE文を取得するテーブル名を指定します。
retbufSQL文を受け取るバッファの先頭アドレスを指定します。
sizeretbufのサイズを示すuint_td型のアドレスを渡します。
戻り値
成功すると、SQL文が格納されたretbufのアドレスが返ります。失敗した場合 stat() にエラー番号が返されます。 STATUS_BUFFERTOOSMALLの場合sizeに必要なバッファサイズが返ります。C++の場合、retbufに受け取るSQL文は常にutf8でエンコードされます。
注釈
この関数の受取りバッファ retbuf は char*のみでwide文字版はありません。また、SQL文は( nsdatabase::execCodePage() の値に関わらず)常にUTF8でエンコーディングされています。
bool isOpened ( ) const
virtual

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

nsdatabaseを再実装しています。

char_td mode ( ) const

データベースをオープンしたときのmodeを返します。未オープンのときに呼び出して得られた値は特に意味を持ちません。

const copyDataFn onCopyData ( ) const

database::setOnCopyData()で登録されたコールバック関数を返します。

void onCopyDataInternal ( table tb,
int  recordCount,
int  count,
bool &  cancel 
)
protectedvirtual

copyTableData()assignSchemaData()関数内部から呼び出されます。 それぞれの関数でテーブルの各行がコピーされるたびに呼び出されます。 コピー時に追加の処理を行いたい場合はオーバーライドします。

const deleteRecordFn onDeleteRecord ( ) const

setOnDeleteRecord()で指定したレコードを削除する際に呼び出される関数のアドレスを返します。

bool onOpenAfter ( )
inlineprotectedvirtual

データベースがオープンされた直後に呼び出されます。追加の処理を行いたい場合はオーバーライドします。

bool onTableOpened ( table tb,
short  fileNum,
short  mode,
bool  isCreated 
)
inlineprotectedvirtual

テーブルがオープンされた直後に呼び出されます。追加の処理を行いたい場合はオーバーライドします。

bool open ( const _TCHAR *  uri,
short  schemaType = 0,
short  mode = -2,
const _TCHAR *  dir = NULL,
const _TCHAR *  ownerName = NULL 
)

データベースをオープンします。具体的にはスキーマテーブルをオープンします。 スキーマテーブルは、テーブルの一覧及び各テーブルの構成情報などメタ情報が保存されたテーブルです。 データベースをオープンすると、dbDef() にてデータベースのメタ情報にアクセスしたり、テーブルに対する操作などが行えるようになります。

引数
[in]uriオープンするデータベースのuriを指定します。通常次のような形式です。

protocol://user/</i>/host/database?dbfile=schemaname.bdf&pwd=password

例 tdap://root@192.168.0.15/test?dbfile=test.bdf&pwd=xxxxx

斜体で示した部分以外は常に固定値(文字)です。

  • protocol サーバーがtransactdの時はは"tdap"を指定します。PSQLの場合は"btrv"を指定します。
  • user ユーザー名を指定します。(認証機能が無効の場合は@を含めて省略可能)
  • host サーバーのホスト名またはIPアドレスを指定します。
  • database データベース名を指定します。
  • schemaname スキーマテーブルの名前を指定します。スキーマテーブルを識別するために、.bdfを付加します。
  • password user@hostに対するパスワードを指定します。(認証機能が無効の場合は&pwd=を含めて省略可能)

スラッシュ(/)、アット(@)、クエスチョン(?)、イコール(=)、スペース( )は区切り文字として予約されています。これらの文字は値に使用することはできまん。"user\@"および、"&pwd=password"は認証が無効の場合省略可能です。passwordはプレーンテキストで指定します。サーバーに送信される際は、クライアントライブラリー内で暗号化されて送信されます。

引数
[in]schemaTypeスキーマの形式を指定します。transactdは TYPE_SCHEMA_BDF = 0を指定します。 PSQLの場合は TYPE_SCHEMA_DDF = 1も指定できます。
[in]modeオープンするモードを指定します。これはスキーマテーブルに対するものでそのほかのテーブルには影響しません。
  • TD_OPEN_NORMAL 読み書き可能な通常モードで開きます。
  • TD_OPEN_READONLY リードオンリーで開きます。
  • TD_OPEN_EXCLUSIVE 読み書き可能で排他モードで開きます。 他のユーザーが使用中の場合は、STATUS_CANNOT_LOCK_TABLEが返ります。 オープンできた場合、他のユーザーはこのスキーマテーブルをオープンできなくなります。
  • TD_OPEN_READONLY_EXCLUSIVE 読み取りロックモードでオープンします。他のユーザーは、TD_OPEN_EXCLUSIVE以外のモードであればこのスキーマテーブルをオープンすることはできます。しかし、書き込みを行うオペレーション(追加・更新・削除)を行うことはできません。 書き込みを行うと、STATUS_LOCK_ERRORが返ります。このモードはPSQLでは使用できません。
[in]dir使用しません。NULLを指定してください。
[in]ownerNamePSQLのデータベースの際に、スキーマテーブルのオーナーネームを指定します。 オーナネームが設定されていない場合はNULLを指定します。
戻り値
成功するとtrueが返ります。失敗するとfalseが返ります。失敗の詳細コードは stat()で取得できます。

既存のmysqlのデータベースを初めてtransactdから使用するときは、スキーマ名に"transactd_schema"を指定すると自動でmysqlのテーブル情報を含んだスキーマテーブルをこの名前で生成します。 setAutoSchemaUseNullkey() も合わせて参照してください。
スキーマの変更を行う場合は通常TD_OPEN_EXCLUSIVEで開きます。排他モードで開くには、他に誰も開いていない状態でなければなりません。 排他モードで開くと閉じるまで他のユーザーはスキーマテーブルをオープンできなくなります。 Transactdにおいて、TD_OPEN_EXCLUSIVEはMySQLの LOCK TABLE ... WRITE ステートメントと同じものです。
また、TD_OPEN_READONLY_EXCLUSIVEはLOCK TABLE ... READ ステートメントと同じです。

table * openTable ( short  fileNum,
short  mode = TD_OPEN_NORMAL,
bool  autoCreate = true,
const _TCHAR *  ownerName = NULL,
const _TCHAR *  uri = NULL 
)

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

引数
[in]fileNumテーブル番号を指定します。
[in]modeオープンするモードを指定します。
  • TD_OPEN_NORMAL 読み書き可能な通常モードで開きます。
  • TD_OPEN_READONLY リードオンリーで開きます。
  • TD_OPEN_EXCLUSIVE 読み書き可能で排他モードで開きます。 他のユーザーが使用中の場合は、STATUS_CANNOT_LOCK_TABLEが返ります。 オープンできた場合、他のユーザーはこのスキーマテーブルをオープンできなくなります。
  • TD_OPEN_READONLY_EXCLUSIVE 読み取りロックモードでオープンします。他のユーザーは、TD_OPEN_EXCLUSIVE以外のモードであればこのスキーマテーブルをオープンすることはできます。しかし、書き込みを行うオペレーション(追加・更新・削除)を行うことはできません。
[in]autoCreatetrueまたはfalseを指定します。trueでテーブルが存在しない場合、スキーマに基づいてテーブルを作成します。
[in]ownerNamePSQLのデータベースの際に、スキーマテーブルのオーナーネームを指定します。
[in]uriスキーマ情報と現在のディレクトリ情報を使用せずに、テーブルの位置(uri)を直接指定したい場合に使用します。
戻り値
成功するとtableオブジェクトが返ります。失敗するとNULLが返ります。 失敗の詳細コードは stat()で取得できます。

排他モードは他に誰も開いていない状態でなければ成功しません。 Transactdにおいて、TD_OPEN_EXCLUSIVEはMySQLの LOCK TABLE ... WRITE ステートメントと同じものです。 また、TD_OPEN_READONLY_EXCLUSIVEはLOCK TABLE ... READ ステートメントと同じです。
MySQLのバイナリログが有効で、トランザクション中にテーブルをオープンしようとすると、STATUS_ALREADY_INTRANSACTIONエラーが返ります。バイナリログが有効な場合、トランザクション中にテーブルをオープンすることはできません。トランザクションを開始する前にオープンしておく必要があります。

table * openTable ( const _TCHAR *  TableName,
short  mode = 0,
bool  autoCreate = true,
const _TCHAR *  ownerName = NULL,
const _TCHAR *  uri = NULL 
)

テーブルをテーブルの名前で指定してオープンします。 その他はテーブルを番号で指定する方法と同様です。オーバーロードされた openTable()を参照してください。

database & operator= ( const database )
protected

コピーは行えません。実装されていません。

void * optionalData ( ) const

ユーザー定義のオプショナルデータを取得します。

virtual void release ( )
virtual

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

nsdatabaseを再実装しています。

const _TCHAR * rootDir ( ) const

データベースの基準ディレクトリを返します。 データベースがオープンされていない場合は長さゼロの文字列を返します。 返される値は、通常のディレクトリ表現(\directory\subdirのような形式)になるのはPSQLエンジンのみです。 transactdではuriで表現されるため "tdap://server/database?dbfile="のようにテーブル名だけが除かれた文字列が返ります。

void setAutoSchemaUseNullkey ( bool  v)

open() でスキーマ名に"transactd_schema"を指定し自動でスキーマを生成する際に、キーフィールドが NULLを許可する場合、そのキーをNULLキーとして生成するかどうかを指定します。
この値は、 open() を呼び出す前に指定する必要があります。

static void setCompatibleMode ( int  mode)
static

Trnasactd 3より前のモードで処理を行うかどうかを指定します。
値は以下のいずれかもしくは組み合わせて使用できます。

引数
mode
  • CMP_MODE_OLD_NULL(0)を指定すると、transactd 2.x互換モードで動作します。
  • CMP_MODE_MYSQL_NULL(1)を指定するとNULLのサポート並びにデフォルト値がサポートされた最新のモードで動作します。
  • CMP_MODE_BINFD_DEFAULT_STR(2)はスキーマを自動生成する場合において、フィールド型のcharsetindexをテーブルのそれと同じにします。 CMP_MODE_BINFD_DEFAULT_STRの指定がない場合は、charsetIndexをCHARSET_BINに設定します。尚、対象のフィールド型は ft_string ft_lstring ft_myvarbinary ft_myblob型の4つです。

デフォルトはCMP_MODE_MYSQL_NULL(1)です。

注意
この関数は、データベースをオープンする前に呼び出す必要があります。 オープン後に異なる値で呼び出した場合の動作は不定で、正常に動作しません。
void setLockReadOnly ( bool  v)
protected

データベースを読み出し専用以外に変更できないようにロックするかどうかを指定します。これは現在のインスタンスに対するものでスキーマなどに影響するものではありません。

引数
[in]vtrueの場合ロックします。falseはロックを解除します。
void setOnCopyData ( const copyDataFn  v)

database::assignSchemaData()database::copyTableData()関数の進行状況を示すコールバック関数をセットします。

void setOnDeleteRecord ( const deleteRecordFn  v)

レコードを削除する際に呼び出される関数のアドレスを指定します。

void setOptionalData ( void *  v)

ユーザー定義のオプショナルデータを設定します。 この値は、コールバック関数の呼び出し元特定のためなどに使用できます。

void setRootDir ( const _TCHAR *  directory)

データベースの基準ディレクトリを設定します。 設定する値の表現は rootDir()で返されるものと同じ表現で行う必要があります。 通常この関数を使う必要はありません。データベースをオープンすると open()内からこの関数を呼び出して 基準ディレクトリが設定されます。

void setTableReadOnly ( bool  value)

テーブルをオープンする際に常にreadOnlyで開くかどうかを指定します。 ここでリードオンリーを指定すると openTable()のmodeパラメータに優先してリードオンリーで開かれます。

引数
[in]valuetrueを指定するとそれ以降に開かれるテーブルはすべてリードオンリーで開かれます。 falseを指定するとopenTable()のmodeパラメータの値でテーブルが開かれます。
bool tableReadOnly ( ) const

テーブルをオープンする際に常にreadOnlyで開くかどうかを返します。

メンバ詳解

const int CMP_MODE_BINFD_DEFAULT_STR = 2
static
static const int CMP_MODE_MYSQL_NULL = 1
static

NULLのサポート並びにデフォルト値がサポートされた最新のモードです。

const int CMP_MODE_OLD_ALL = 2
static
const int CMP_MODE_OLD_BIN = 3
static
static const int CMP_MODE_OLD_NULL = 0
static

Transactd 2.x互換のモードです。

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