前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0
SFBDBRecord
IDBRecord インターフェイスのラッパークラスです。
#include <SFBDBRecord.h.hpp>
class SFBDBRecord : public SFBBase;
SFMTYPEDEFWRAPPER(SFBDBRecord)

継承図

SFBDBRecord クラスの継承図

協調図

SFBDBRecord クラスの協調図

参照

BREW API IDBRecord

バグ情報

IDBRECORD_Remove
Tips BREW 2.0 以前の SDK および実機

IDBRECORD_Remove() をコールしてレコードを削除しても、 物理的なデータベースファイルそのものは直ちにアップデートされません。 削除した数が閾値に達した時にはじめて物理的なファイルがアップデートされます。 また、閾値以下のレコードを削除してデータベースを閉じた場合、 次回そのデータベースにアクセスした時に物理的なファイルがアップデートされます。 なお、閾値の値はメーカー様定義であり、実装によって異なります。

SDK 2.1 および実機では、データベースは IDBRECORD_Remove() を呼ぶごとに更新されます。

メンバ

パブリック関数
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 )
任意のレコードを更新します。

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);

使用例

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

// SFBDataMgr インスタンスを作成します。
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
SFXWideString       str;

// データベースをオープンします。
database = dbmgr->OpenDatabase("MyDataBase.db", true);

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

// 次のフィールドを取得します。
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 へのポインタ。
);

使用例

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

// SFBDataMgr インスタンスを作成します。
SFBDBMgrSmp         dbmgr = SFBDBMgr::NewInstance();
SFBDatabaseSmp      database;
SFBDBRecordSmp      record;
AEEDBFieldName      fieldName;
AEEDBFieldType      fieldType;
UInt16              len;
UInt16              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 インターフェース
);

参照

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   // 新しいセット内のフィールドの数。
);

使用例

レコードを更新します。

// 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