Hi,
first my table definition...
Code:TBool CDatabaseEngine::CreateTableVoiceMailL() { _LIT( KTablename, "VoiceMail" ); _LIT( KIdCol, "vm_Id" ); _LIT( KRecordDateCol, "record_date" ); _LIT( KSoundCol, "sound" ); if ( !DoesTableExistsL( KTablename ) ) { CDbColSet *ColSet = CDbColSet::NewLC(); TDbCol Fld_id( KIdCol, EDbColUint32 ); Fld_id.iAttributes = TDbCol::ENotNull | TDbCol::EAutoIncrement; ColSet->AddL( Fld_id ); TDbCol Fld_RecordDate( KRecordDateCol, EDbColInt64 ); Fld_RecordDate.iAttributes = TDbCol::ENotNull; ColSet->AddL( Fld_RecordDate ); TDbCol Fld_Sound( KSoundCol, EDbColLongBinary ); Fld_Sound.iAttributes = TDbCol::ENotNull; ColSet->AddL( Fld_Sound ); TInt Err = iDatabase.CreateTable( KTablename, *ColSet); CleanupStack::PopAndDestroy( ColSet ); return ( Err == KErrNone ); } return ETrue; //no error nothing to do! }
and when i put data into ths table i got the error when reaching PutL
Code:void CDatabaseEngine::CreateVoiceMailRecordSetL(const TDesC& aVMFilename, TUint32& aIndex ) { RFile AMRFile; TInt FileSize( -1 ); RDbColWriteStream SoundFileCol; TInt VMIndex( -1 ); TInt Err = AMRFile.Open( CCoeEnv::Static()->FsSession(), aVMFilename, EFileRead); if ( Err == KErrNone ) { AMRFile.Size( FileSize ); HBufC8* FileContent = HBufC8::NewLC( FileSize ); TPtr8 ptr = FileContent->Des(); AMRFile.Read( ptr, FileSize ); AMRFile.Close(); //prepare your RDbView with your query, execute etc. _LIT( KSelectQuery, "SELECT * FROM %S" ); _LIT( KTablename, "VoiceMail" ); HBufC* SQLStmt = HBufC::NewLC( 255 ); SQLStmt->Des().Format( KSelectQuery, &KTablename() ); //Start transaction TInt Err = iDatabase.Begin(); if ( Err == KErrNone ) { RDbView table; table.Prepare( iDatabase, TDbQuery( *SQLStmt ) ); CleanupClosePushL( table ); table.InsertL(); TInt64 record_date ( GetCurrentTimeMillis() ); table.SetColL( 2, record_date ); SoundFileCol.OpenL( table, 3); SoundFileCol.WriteL( *FileContent, FileSize ); table.PutL(); aIndex = table.ColUint32(1); table.Close(); CleanupStack::PopAndDestroy( 1 ); //table } CleanupStack::PopAndDestroy( SQLStmt ); CleanupStack::PopAndDestroy( FileContent ); //End transaction iDatabase.Commit(); iDatabase.Compact(); TRAPD(FileErr, CCoeEnv::Static()->FsSession().Delete( aVMFilename ) ); if( FileErr != KErrNone ) { //ToDo } } }
But what went wrong?
Greetz
Franky

Reply With Quote

