前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFBDBRecord
IDBRecord インターフェースのラッパークラスです。
#include <SFBDBRecord.h.hpp>
class SFBDBRecord : public SFBBase;
SFMTYPEDEFWRAPPER(SFBDBRecord)

継承図

SFBDBRecord クラスの継承図

バージョン

BREW 2.0 BREW 2.1 BREW 3.1 BREW 4.0

参照

BREW API IDBRecord

メンバ

パブリック関数
VoidPtr GetField( AEEDBFieldName* name , AEEDBFieldType* type , UInt16Ptr length )
フィールドからフィールド名、フィールドタイプ、フィールドの長さ、フィールドのデータを取得します。
Bool GetFieldDWord( UInt32Ptr field )
フィールドタイプが AEE_FT_DWORD の場合に、4 バイトのフィールド値を取得します。
WCharPtr GetFieldString( Void )
フィールドタイプが AEEDB_FT_STRING の場合に、文字列型のフィールド値を取得します。
Bool GetFieldWord( UInt16Ptr field )
フィールドタイプが AEE_FT_WORD の場合に、2 バイトのフィールド値を取得します。
UInt16 GetID( Void )
指定したレコードの ID を取得します。
AEEDBFieldType NextField( AEEDBFieldName* name , UInt16Ptr length )
レコード内の次のフィールドを取得します。
SFCError Remove( SFBDBRecordSmpPtr record )
レコードをデータベースから削除して、SFBDBRecord オブジェクトを解放します。
Void Reset( Void )
レコード内の最初のフィールドをカレントフィールドにします。
SFCError Update( AEEDBField* fields , SInt32 fieldsCount )
任意のレコードを更新します。
プロテクト関数
static
SFBBaseSmp
FactoryByCreate( AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを生成します。
static
SFBBaseSmp
FactoryByQuery( SFBQuerySmpConstRef query , AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを指定した SFBQuery インスタンスを使用して生成します。

SFBDBRecord::GetField
フィールドからフィールド名、フィールドタイプ、フィールドの長さ、フィールドのデータを取得します。
[ public ]
VoidPtr GetField(
    AEEDBFieldName* name   // フィールド名へのポインタ
    AEEDBFieldType* type   // フィールドタイプへのポインタ
    UInt16Ptr length       // フィールドの長さ( バイト数 )へのポインタ
);

使用例

フィールドの内容を取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
VoidPtr             data;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(3);

// 次のフィールドを取得する
fieldType = record->NextField(&fieldName, &len);

// フィールドの内容を取得する
data = record->GetField(&fieldName, &fieldType, &len);

参照

BREW API IDBRECORD_GetField | AEEDBFieldType | AEEDBFieldName


SFBDBRecord::GetFieldDWord
フィールドタイプが AEE_FT_DWORD の場合に、4 バイトのフィールド値を取得します。
[ public ]
Bool GetFieldDWord(
    UInt32Ptr field   // この関数によって返される UInt32 へのポインタ
);

使用例

4 バイトのフィールド値を取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
UInt32              val;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// 次のフィールドを取得する
fieldType = record->NextField(&fieldName, &len);

// 4 バイトのフィールド値を取得する
record->GetFieldDWord(&val);

参照

BREW API IDBRECORD_GetFieldDWord


SFBDBRecord::GetFieldString
フィールドタイプが AEEDB_FT_STRING の場合に、文字列型のフィールド値を取得します。
[ public ]
WCharPtr GetFieldString(Void);

戻り値

  • フィールドタイプが AEE_FT_DWORD であるとき: true
  • それ以外のとき: false

使用例

文字列型のフィールドの値を取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
UInt32              val;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// 次のフィールドを取得する
fieldType = record->NextField(&fieldName, &len);

// 文字列型のフィールドの値を取得する
str = SFXWideString(record->GetFieldString());

参照

BREW API IDBRECORD_GetFieldString


SFBDBRecord::GetFieldWord
フィールドタイプが AEE_FT_WORD の場合に、2 バイトのフィールド値を取得します。
[ public ]
Bool GetFieldWord(
    UInt16Ptr field   // この関数によって返される UInt16 へのポインタ
);

戻り値

  • フィールドタイプが AEE_FT_WORD であるとき: true
  • それ以外のとき: false

使用例

2 バイトのフィールド値を取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
UInt32              val;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// 次のフィールドを取得する
fieldType = record->NextField(&fieldName, &len);

// 2 バイトのフィールド値を取得する
record->GetFieldWord(&val);

参照

BREW API IDBRECORD_GetFieldWord


SFBDBRecord::GetID
指定したレコードの ID を取得します。
[ public ]
UInt16 GetID(Void);

使用例

レコードの ID を取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
UInt16              id;

// レコードに設定するフィールドを作成する
UInt32              val   = 32;
AEEDBField          field = {AEEDB_FT_DWORD, AEEDBFIELD_TEXT, 1, &val};

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内にレコードを 1 つ作成する
record = database->CreateRecord(&field, 1);

// レコードの ID を取得する
id = record->GetID();

参照

BREW API IDBRECORD_GetID


SFBDBRecord::NextField
レコード内の次のフィールドを取得します。
[ public ]
AEEDBFieldType NextField(
    AEEDBFieldName* name   // 次のフィールドの名前へのポインタ
    UInt16Ptr length       // 次のフィールドの長さへのポインタ
);

使用例

次のフィールドを取得します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              size;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// 次のフィールドを取得する
fieldType = record->NextField(&fieldName, &size);

参照

BREW API IDBRECORD_NextField | AEEDBFieldName | AEEDBFieldType


SFBDBRecord::Remove
レコードをデータベースから削除して、SFBDBRecord オブジェクトを解放します。
[ public ]
SFCError Remove(
    SFBDBRecordSmpPtr record   // 削除する SFBDBRecord インターフェース
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 削除するレコードが不正な状態にあったとき: AEE_DB_EBADREC
  • データベースが不正な状態にあるとき: AEE_DB_EBADSTATE

使用例

レコードをデータベースから削除します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// レコードを削除して、オブジェクトを解放する
record->Remove(record);

参照

BREW API IDBRECORD_Remove


SFBDBRecord::Reset
レコード内の最初のフィールドをカレントフィールドにします。
[ public ]
Void Reset(Void);

参照

BREW API IDBRECORD_Reset | SFBDBRecord::NextField


SFBDBRecord::Update
任意のレコードを更新します。
[ public ]
SFCError Update(
    AEEDBField* fields   // 新しいフィールド値のセットへのポインタ
    SInt32 fieldsCount   // 新しいセット内のフィールドの数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY
  • AEEDBField が null のとき: AEE_DB_ENULLFIELD
  • fieldsCount が 0 以下のとき: AEE_DB_EBADFIELDNUM

使用例

レコードを更新します。

// SFBDataMgr インスタンスを作成する
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;

// レコードに設定するフィールドを作成する
AChar               str[] = {"Update!!!"};
AEEDBField          field = {AEEDB_FT_STRING, AEEDBFIELD_TEXT, STRLEN(str), str};

// データベースを開く
database = dbmgr->OpenDatabase("MyDataBase.db", true);

// データベース内から指定したインデックスのレコードを取得する
record = database->GetRecordByID(0);

// レコードを更新する
record->Update(&field, 1);

参照

BREW API IDBRECORD_Update