2012-04-11 5 views
1

Mein Code Speichern ist:Sqlite Datenfehler

const char *sqlInsertString; 
sqlite3_stmt *addStatement; 
sqlInsertString=sqlite3_mprintf("insert into AnimalTable(name,propertyID,animalID,breed,dateofbirth,sex,notes,imageData) values" "('%s','%s','%s','%s','%s','%s','%s','%d')",nameString,propertyString,animalidString,breedString,dateofbirth,sexString,notesString,imageData); 
    if (sqlite3_open([sqlFile UTF8String],&database)==SQLITE_OK) { 
     sqlite3_prepare_v2(database, sqlInsertString, -1, &addStatement, NULL); 
     if (sqlite3_step(addStatement)==SQLITE_DONE) { 
      sqlite3_bind_blob(addStatement, 1, [imageData bytes], [imageData length], NULL); 
      sqlite3_finalize(addStatement); 
      NSLog(@"Data saved"); 

     } 
     else 
      NSLog(@"Some Error occurred"); 
    } 

    sqlite3_close(database); 

Ich glaube, ich etwas falsch mache, kann es nicht herausfinden. Es ist ein Fehler aufgetreten msg, wenn ich Daten zu SQLite hinzufügen. Und auch erhalten Ausnahme NSInternalInconsistencyException keine solche Tabelle: AnimalTable. Aber AnimalTable existiert und wenn ich die Abfrage in Sqlmanager ausführe, läuft es richtig.

+0

offtopic: bitte für zukünftige Projekte nutzen FMDatabase: https://github.com/ ccgus/fmdb – CarlJ

Antwort

1

Code Es folgt für die Speicherung der Blob-Typ des Datenspeichers verwenden,

Kann Ihnen diese helfen

if(sqlite3_prepare_v2(database, sqlInsertQry, -1, &compiledStmt, NULL) == SQLITE_OK){ 
       for (NSDictionary *dObj in arForData) { 
        sqlite3_bind_blob(compiledStmt,1,[[dObj valueForKey:@"NotiData"] bytes],[[dObj valueForKey:@"NotiData"] length],NULL); 
        PUT_Date(2,@"fireDate"); 


        NSUInteger err = sqlite3_step(compiledStmt); 
        if (err != SQLITE_DONE){ 
         //NSLog(@"error while binding %d %s",err, sqlite3_errmsg(database)); 
         //NSLog(@"%@",dObj); 
        } 
        sqlite3_reset(compiledStmt); 
       } 
       sqlite3_finalize(compiledStmt);  
      }