2009-03-28 9 views
10

Me pregunto si alguien puede ayudarme a entender qué está mal con este bloque de código. Nunca supero la instrucción sqlite3_prepare_v2 y el depurador dice:problema de iPhone sqlite: "falta de memoria" en sqlite3_prepare_v2

'NSInternalInconsistencyException', razón: 'Error al crear la instrucción add. 'sin memoria' '

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

if(addStmt == nil) { 
    NSLog(@"About to add start time...\n"); 
    const char *sql = "INSERT INTO games_played(start) VALUES(?)";  
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
    NSLog(@"add statement created successfully!\n"); 
} 
NSLog(@"About to bind start time...\n"); 
sqlite3_bind_text(addStmt, 1, @"start time", -1, SQLITE_TRANSIENT); 

Respuesta

26

Nunca abrí la base de datos ... Creo que ese es el problema.

+0

Gracias! También tuve este problema :) – hatfinch

+3

obvio en retrospectiva, pero TERRIBLE mensaje de error! –

+0

Me he dado cuenta de que siempre me sale "memoria" de cualquier error de sintaxis SQL, quizás esto es un error en sqlite3 con sqlite3_errmsg? –

11

No es un error, el problema es que nunca se abre la base de datos. Por ejemplo:

if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
+0

Para que quede claro, debe hacer esto sqliteStatusCode = sqlite3_open ([databasePath UTF8String], & tracksDB); – loretoparisi

+0

¡Muchas gracias! – swiftBoy

0

También me enfrentaba a este problema y lo resolví restableciendo la base de datos para la instrucción sqlite.

Cuestiones relacionadas