2009-12-13 4 views
4

J'ai un problème avec mon application ouvre cette base de données et sélectionne les lignes de ce ok,SQLite Mémoire saturée lors de la préparation instruction d'insertion

Alors quand je veux ajouter de nouvelles lignes en utilisant le code suivant et je reçois toujours le problème suivant à l'exécution du prepare_V2.

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error while creating add statement. 'out of memory'' 
Code

est .....

static sqlite3 *database = nil;     
static sqlite3_stmt *addStmt = nil; 


- (BOOL)addUserprofile { 

    addStmt = nil; // set to force open for testing 
    database = nil; // set to force creation of addstmt for testing 

    if (database == nil) { // first time then open database 
     NSString *databaseName = @"UserProfile.db"; 
     // Use editable database paths 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
     NSString *documentsDir = [paths objectAtIndex:0]; 
     NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; 
     NSLog(@"path = %@",databasePath); 

     NSLog(@"opening Database"); 
     sqlite3 *database; 
     // Open the database from the users filessytem 
     if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      NSLog(@"Database Open"); 
      } 
     else { 
      NSLog(@"Database did not open"); 
     } 

    } 

    if(addStmt == nil) { 

NSLog(@"Creating add stmt"); 
     const char *sql = "INSERT INTO Profile (ProfileName) VALUES(?)"; 

    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK) { 
      NSAssert1(0, @"** Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
      success = NO; 
      return success; 
     } 
    } 
    sqlite3_bind_text(addStmt, 1, [ProfileName UTF8String], -1, SQLITE_TRANSIENT); 
+0

Le message d'erreur est « Erreur lors de la création de la déclaration de mise à jour », alors que votre code dit « Erreur lors de la création de la déclaration ajouter "- Êtes-vous sûr de déboguer le code que vous utilisez? –

+3

Je l'ai compris moi-même. La base de données ouverte ne fonctionnait pas. Donc, je me suis débarrassé de l'ouverture conditionnelle et le forcer à ouvrir chaque fois et le code fonctionne maintenant. J'ai eu le même problème sur les fonctions d'ajout et de mise à jour. –

+0

Merci beaucoup d'avoir posté la réponse. –

Répondre

Questions connexes