2009-03-28 20 views
10

Mi chiedo se qualcuno possa aiutarmi a capire cosa c'è di sbagliato in questo blocco di codice. Non riesco mai a superare l'istruzione sqlite3_prepare_v2 e il debugger dice:iphone sqlite problem: "out of memory" su sqlite3_prepare_v2

'NSInternalInconsistencyException', motivo: 'Errore durante la creazione dell'istruzione add. 'esaurito della 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); 

risposta

26

Non ho mai aperto il database ... penso che questo sia il problema.

+0

Grazie! Ho avuto anche questo problema :) – hatfinch

+3

ovvio in retrospettiva, ma TERRIBILE messaggio di errore! –

+0

Ho notato che ottengo sempre "memoria insufficiente" su qualsiasi errore di sintassi SQL, forse questo è un bug in sqlite3 con sqlite3_errmsg? –

11

Non è un bug, il problema è che non si apre mai il database. Per esempio:

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

Per essere chiari è necessario farlo sqliteStatusCode = sqlite3_open ([databasePath UTF8String], & tracksDB); – loretoparisi

+0

Grazie mille !! – swiftBoy

0

ero anche di fronte a questo problema, e risolto da ripristinare il database per l'istruzione SQLite.

Problemi correlati