Creating
a User Defined Table: Tutorial
This tutorial shows you how to create a user defined table. The
tutorial, then shows you how to store a new record.
Before you start,
you must understand:
-
the general concept
of the Comms Database
-
the specific concepts
of fields, records, links and tables
-
how to write and build
application code to run on Symbian platform
-
Make sure that you
have created a session.
-
Define a schema
for the new table.
Create an array of
SGenericRecordTypeInfo
items.
Each
SGenericRecordTypeInfo
item defines a field in the record.
const SGenericRecordTypeInfo recordInfo[] =
{
SGenericRecordTypeInfo(KCDTIdRecordName,EText,ENotNull,KCDTypeNameRecordName),
SGenericRecordTypeInfo(KCDTIdRecordTag,EUint32,ENoAttrs,KCDTypeNameRecordTag),
SGenericRecordTypeInfo(KCDTIdWLANServiceId,EUint32,ENoAttrs,KNameWLANServiceId),
SGenericRecordTypeInfo(KCDTIdWLANType,EUint32,ENoAttrs,KNameWLANType),
SGenericRecordTypeInfo(KCDTIdWLANEnabled,EBool,ENoAttrs,KNameWLANEnabled),
SGenericRecordTypeInfo(KCDTIdWLANPriority,EUint32,ENoAttrs,KNameWLANPriority),
SGenericRecordTypeInfo(0,0,ENoAttrs,KCDNull)
};
-
Define a name for
the table.
_LIT(KGenericTable,"MyGenericTable");
-
Create a
CMDBGenericRecord
object.
A
CMDBGenericRecord
object represents
a record and a set of records
Give the object the name of the table and the name of the schema.
...
// Record factory creates the CMDBGenericRecord object. The KCDNewTableRequest value
// passed to the record factory allocates a new table Id.
CMDBGenericRecord* ptrNewTable =
static_cast<CMDBGenericRecord*>(CCDRecordBase::RecordFactoryL(KCDNewTableRequest));
// Initialise with the name of the table and the name of the schema.
ptrNewTable->InitialiseL(KGenericTable(),recordInfo);
...
-
Access fields in
the record.
The code uses
GetFieldByNameL()
and
GetFieldByIdL()
.
...
TInt valueType;
CMDBElement* LanType = ptrNewTable-> GetFieldByNameL(KNameWLANType, valueType);
CMDBElement* RecordName = ptrNewTable->GetFieldByIdL(KCDTIdRecordName);
...
-
Change the valuie
of the fields and create a new record.
...
// Cast the field objects to the appropriate type
CMDBField<TUint32>* LanTypefield = static_cast<CMDBField<TUint32>*>(LanType);
CMDBField<TDesC>* RecordNamefield = static_cast<CMDBField<TDesC>*>(RecordName);
// Change the field value
*LanTypefield = 100;
// Change the field value
_LIT(KNewName, " NewName ");
RecordNamefield->SetMaxLengthL(KNewName().Length());
*RecordNamefield = KNewName();
// Can also use this format: RecordNamefield->SetL(KNewName());
// Asks for a new record
ptrNewTable->SetRecordId(KCDNewRecordRequest);
// Stores the new record
ptrNewTable->StoreL(*iDb);
...
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.