This tutorial shows you how to create a user defined table. The tutorial, then shows you how to store a new record.
This tutorial shows you:
Before you start, you must understand:
Make sure that you have created a session.
Define a schema for the new table.
Create an array of [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CommsDat']]]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 [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CommsDat']]]CMDBGenericRecord object.
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 usesGetFieldByNameL() 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); ...