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