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);
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? –
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. –
Merci beaucoup d'avoir posté la réponse. –