/** * Method to fetch Validity of the Authentication app * @param aAuthAppId The ID of the Authentication app * @param aValidity [out] The time by which the Auth set will expire */ void CSmfCredMgrDbUser::readValidity(const TDesC& aAuthAppId, TInt64& aValidity) { TInt err(KErrNone); RSqlStatement sqlReadStatement; TInt paramIndex(KErrNone); err = sqlReadStatement.Prepare(iDataBase, KSmfDbReadValidity); __ASSERT_DEBUG( (err >= KErrNone), User::Invariant()); paramIndex = sqlReadStatement.ParameterIndex(_L(":iID")); err = sqlReadStatement.BindText(paramIndex, aAuthAppId); __ASSERT_DEBUG( (err >= KErrNone), User::Invariant()); while ((err = sqlReadStatement.Next()) == KSqlAtRow) { //sometimes sqlStmt.Next returns KSqlAtRow even if no row is present if (!sqlReadStatement.IsNull(0)) { aValidity = sqlReadStatement.ColumnInt64(1); } else { __ASSERT_DEBUG( 0, User::Invariant()); } } sqlReadStatement.Close(); }
/** @SYMTestCaseID PDS-SQLITE3SEC-UT-4041 @SYMTestCaseDesc SQL server single-select performance test. The test selects one randomly chosen record and stores the execution time for later use (comparison and printing). @SYMTestPriority High @SYMTestActions SQL server single-select performance test. @SYMTestExpectedResults Test must not fail @SYMREQ REQ11320 */ static void SqlServerSingleSelectTest(const char aSingleSelectSql[], TInt aSelectRecId) { TheTest.Next( _L("@SYMTestCaseID:PDS-SQLITE3SEC-UT-4041")); (void)KillProcess(KSqlSrvName); TInt err = TheDb.Open(KTestDbName); TEST2(err, KErrNone); TheSqlBuf.Copy(TPtrC8((const TUint8*)aSingleSelectSql)); TheSqlBuf.AppendNum((TInt64)aSelectRecId); RSqlStatement stmt; err = stmt.Prepare(TheDb, TheSqlBuf); TEST2(err, KErrNone); TInt recCnt = 0; TUint32 fc = FastCounterValue(); while((err = stmt.Next()) == KSqlAtRow) { TInt64 i64 = stmt.ColumnInt64(0); UNUSED_VAR(i64); TReal d = stmt.ColumnReal(1); UNUSED_VAR(d); TPtrC t; err = stmt.ColumnText(2, t); TEST2(err, KErrNone); UNUSED_PTR(t); TPtrC8 b; err = stmt.ColumnBinary(3, b); TEST2(err, KErrNone); UNUSED_PTR(b); ++recCnt; } StorePerfTestResult(EPerfTestSqlMode, EPerfTestSingleSelect, FastCounterValue() - fc); TEST2(err, KSqlAtEnd); TEST2(recCnt, 1); stmt.Close(); TheDb.Close(); }
/** Reads the contact item from the database using the given contact item ID. @param aItemId The Id number of the contact to be read. @param aView Specifies the fields to be read. @param aInfoToRead not used @param aSessionId The ID of the session that issued the request. This is used to prevent Phonebook Synchroniser deadlock. @param aIccOpenCheck Specifies if validation with the Phonebook Synchroniser is needed for this contact. @leave KErrArgument if the itemID can't be set within select statement @leave KErrNotFound if a contact item with aItemId does not exist within contact database @leave KSqlErrBusy the database file is locked; thrown if RSqlStatement::Next() returns this error @leave KErrNoMemory an out of memory condition has occurred - the statement will be reset;thrown if RSqlStatement::Next() returns this error @leave KSqlErrGeneral a run-time error has occured - this function must not be called again;thrown if RSqlStatement::Next() returns this error @leave KSqlErrMisuse this function has been called after a previous call returned KSqlAtEnd or KSqlErrGeneral.thrown if RSqlStatement::Next() returns this error @leave KSqlErrStmtExpired the SQL statement has expired (if new functions or collating sequences have been registered or if an authorizer function has been added or changed); thrown if RSqlStatement::Next() returns this error @return CContactItem created from reading the database tables. */ CContactItem* CPplContactItemManager::ReadLC(TContactItemId aItemId, const CContactItemViewDef& aView, TInt aInfoToRead, TUint aSessionId, TBool aIccOpenCheck) const { CContactTemplate* sysTemplate = NULL; if (aItemId != KGoldenTemplateId) { sysTemplate = const_cast<CContactTemplate*>(&iContactProperties.SystemTemplateL()); } RSqlStatement selectStmt; CleanupClosePushL(selectStmt); User::LeaveIfError(selectStmt.Prepare(iDatabase, iSelectStatement->SqlStringL())); TInt err = selectStmt.BindInt(KFirstParam, aItemId); if(err != KErrNone) { User::Leave(KErrArgument); } CContactItem* item = NULL; TUid type(KNullUid); if((err = selectStmt.Next()) == KSqlAtRow) { TInt contactId = selectStmt.ColumnInt(iSelectStatement->ParameterIndex(KContactId)); TInt templateId = selectStmt.ColumnInt(iSelectStatement->ParameterIndex(KContactTemplateId)); TInt typeFlags = selectStmt.ColumnInt(iSelectStatement->ParameterIndex(KContactTypeFlags)); type = TCntPersistenceUtility::TypeFlagsToContactTypeUid(typeFlags); item = CContactItem::NewLC(type); item->SetId(contactId); TPtrC guid = selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactGuidString)); item->SetUidStringL(guid); TInt attr = (typeFlags & EContactAttributes_Mask) >> EContactAttributes_Shift; item->SetAttributes(attr); item->SetTemplateRefId(templateId); item->SetLastModified(TTime(selectStmt.ColumnInt64(iSelectStatement->ParameterIndex(KContactLastModified)))); item->SetCreationDate(TTime(selectStmt.ColumnInt64(iSelectStatement->ParameterIndex(KContactCreationDate)))); item->SetAccessCount(selectStmt.ColumnInt(iSelectStatement->ParameterIndex(KContactAccessCount))); RArray<TPtrC> fastAccessFields; CleanupClosePushL(fastAccessFields); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactFirstName))); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactLastName))); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactCompanyName))); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactFirstNamePrn))); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactLastNamePrn))); fastAccessFields.AppendL(selectStmt.ColumnTextL(iSelectStatement->ParameterIndex(KContactCompanyNamePrn))); //set first name, last name, company name, first name pronunciation, last name pronunciation, company name pronunciation for (TInt fieldNum = item->CardFields().Count() - 1; fieldNum>=0; --fieldNum) { CContactItemField& textField = (item->CardFields())[fieldNum]; const TInt nameFieldIndex = NameFieldIndex(textField); // Check if field is first name, last name, company name, // first name pronunciation, last name pronunciation, company name pronunciation. if (nameFieldIndex != KErrNotFound) { HBufC* text = HBufC::NewLC(fastAccessFields[nameFieldIndex].Size()); text->Des() = fastAccessFields[nameFieldIndex]; textField.TextStorage()->SetText(text); CleanupStack::PopAndDestroy(text); } } CleanupStack::PopAndDestroy(&fastAccessFields); }
void CMdSSqLiteConnection::ColumnsL( const RSqlStatement& aStatement, RRowData& aRow ) { const TInt count( aRow.Size() ); for( TInt i=0; i < count; ++i ) { // get data in column, check for type const TSqlColumnType actual = aStatement.ColumnType( i ); if( actual == ESqlNull ) { aRow.Column( i ).Set( (const HBufC16*)NULL ); continue; } const TColumnDataType coltype = aRow.Column( i ).Type(); switch ( coltype ) { case EColumnBool: { TInt valInt = aStatement.ColumnInt( i ); const TBool valBool = valInt ? ETrue : EFalse; aRow.Column( i ).Set( valBool ); break; } case EColumnInt32: { TInt32 valInt = aStatement.ColumnInt( i ); aRow.Column( i ).Set( valInt ); break; } case EColumnUint32: { TInt64 valInt64 = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( (TUint32)valInt64 ); break; } case EColumnInt64: { TInt64 valInt64 = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( valInt64 ); break; } case EColumnReal32: { TReal valReal = aStatement.ColumnReal( i ); aRow.Column( i ).Set( static_cast<TReal32>( valReal ) ); break; } case EColumnReal64: { TReal valReal = aStatement.ColumnReal( i ); aRow.Column( i ).Set( valReal ); break; } case EColumnTime: { TTime valTime = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( valTime ); break; } case EColumnDes16: { switch ( actual ) { case ESqlText: { TPtrC16 valTPtrC16 = aStatement.ColumnTextL( i ); HBufC16* valHBuf16 = HBufC16::NewL( valTPtrC16.Length() ); *valHBuf16 = valTPtrC16; aRow.Column( i ).Set( valHBuf16 ); break; } case ESqlInt: { HBufC16* valHBuf16int32 = HBufC16::NewL( 30 ); TInt valInt = aStatement.ColumnInt( i ); valHBuf16int32->Des().Num( valInt ); aRow.Column( i ).Set( valHBuf16int32 ); break; } case ESqlInt64: { HBufC16* valHBuf16int64 = HBufC16::NewL( 30 ); TInt64 valInt64 = aStatement.ColumnInt64( i ); valHBuf16int64->Des().Num( valInt64 ); aRow.Column( i ).Set( valHBuf16int64 ); break; } case ESqlReal: { HBufC16* valHBuf16real64 = HBufC16::NewL( 40 ); TReal valReal = aStatement.ColumnReal( i ); TRealFormat realFormat; realFormat.iType |= KAllowThreeDigitExp; valHBuf16real64->Des().Num( valReal, realFormat ); aRow.Column( i ).Set( valHBuf16real64 ); break; } case ESqlNull: { aRow.Column( i ).Set( (HBufC16*)NULL ); break; } default: { #ifdef _DEBUG User::Panic( _L( "MdSSCCo1" ), KErrCorrupt ); #endif User::Leave( KErrCorrupt ); } } break; } case EColumnNotUsed: // skip this round break; default: #ifdef _DEBUG User::Panic( _L( "MdSSCCo2" ), KErrCorrupt ); #endif User::Leave( KErrCorrupt ); } } }