[Platform : Symbian C++, S60, 3rd Edition, FP1]
Hi Wizard_hu,
Here is the updated code with the CreateSMSTableL function.... plz look at it and tell me what is the problem
Following are the lines of code :
Code:
//Function used to create database
TInt CDatabaseHandler::CreateDatabaseL()
{
//TInt errno;
User::InfoPrint(_L("Start..."));
User::After(2000000);
Close();
if(BaflUtils::FileExists(iFsSession,KDbName))
{
if(iOpen)
Close();
CEikonEnv::Static()->FsSession().Delete(KDbName);
iOpen = EFalse;
}
TRAPD(errno,
iFileStore = CPermanentFileStore::CreateL(iFsSession, KDbName,
EFileRead|EFileWrite);
iFileStore->SetTypeL(iFileStore->Layout());// Set file store type
TStreamId id = iMobileNannyDb.CreateL(iFileStore);// Create stream object
iFileStore->SetRootL(id);// Keep database id as root of store
iFileStore->CommitL();// Complete creation by commiting
);
if(errno!=KErrNone)
{
return errno;
}
iOpen = ETrue;
User::InfoPrint(_L("Database Created"));
User::After(2000000);
CreateSMSTableL();
User::InfoPrint(_L("Table Created"));
User::After(2000000);
// CreateSMSIndexL();
// User::InfoPrint(_L("Index Created"));
// User::After(2000000);
return KErrNone;
}
//and this is my table creation code
Code:
void CDatabaseHandler::CreateSMSTableL()
{
TDbCol phoneNumberCol(KColPhoneNumber, EDbColText, KMaxPhoneNumberLength); //EDbColText);
TDbCol SMSTextCol(KColSMSText, EDbColText, KMaxSMSLength); //Using default length
TDbCol dateTimeCol(KColDateTime, EDbColDateTime, KMaxDateTimeLength); //Using default length
TDbCol directionCol(KColDirection, EDbColText, KMaxDirectionLength); //Using default length
// Add the columns to column set
CDbColSet* SMSColSet = CDbColSet::NewLC();
SMSColSet->AddL(phoneNumberCol);
SMSColSet->AddL(SMSTextCol);
SMSColSet->AddL(dateTimeCol);
SMSColSet->AddL(directionCol);
TInt errno;
TRAP(errno, iMobileNannyDb.CreateTable(KSMSTableName,*SMSColSet));
if(errno != KErrNone)
{
User::InfoPrint(_L("Table Open Error"));
User::After(3000000);
}
CleanupStack::PopAndDestroy(SMSColSet);
User::InfoPrint(_L("Table Created"));
User::After(2000000);
}
Code:
//This is the function to store details in table
void CDatabaseHandler::AddSMStWithCppApiL(const TDesC& aPhoneNumber,
const TDesC& aSMSText,
const TDesC& aDirection,
const TDateTime aDateTime
)
{
RDbTable SMStable;
//RDbColWriteStream writeStream;
TInt err = SMStable.Open(iMobileNannyDb, KSMSTableName, SMStable.EUpdatable);
if(err!=KErrNone)
{
User::InfoPrint(_L("error in opening")); //here is the problem
return err;
}
CDbColSet* SMSColSet = SMStable.ColSetL();
CleanupStack::PushL(SMSColSet);
SMStable.Reset();
TRAPD(error,
SMStable.InsertL();
SMStable.SetColL(SMSColSet->ColNo(KColPhoneNumber), aPhoneNumber);
SMStable.SetColL(SMSColSet->ColNo(KColDirection), aDirection);
SMStable.SetColL(SMSColSet->ColNo(KColDateTime), aDateTime);
SMStable.SetColL(SMSColSet->ColNo(KColSMSText), aSMSText);
//writeStream.OpenL(table, SMSColSet->ColNo(KColSMSText));
//writeStream.WriteL(aSMSText);
);
if(error!=KErrNone)
{
return error;
}
//writeStream.Close();
TRAP(err, SMStable.PutL());
if(err!=KErrNone)
{
return err;
}
User::InfoPrint(_L("Record Inserted"));
User::After(2000000);
CleanupStack::PopAndDestroy(SMSColSet);
SMStable.Close();
return KErrNone;
}