2010-08-23 12 views
8

Cuando se ejecuta la siguiente instrucción a prepararse para una consulta db-selecct SQLite3 me sale un error SQLLite 21 "rutina de biblioteca llamada fuera de secuencia":SQLite3 - rutina de biblioteca llamada fuera de secuencia

sqlite3    *lDb; 
sqlite3_stmt   *lStmt; 
NSNumberFormatter  *lNbrFmt = [[[NSNumberFormatter alloc] init] autorelease]; 

// Define SQL statement 
NSString *lSql = @"SELECT section, language, title, description" 
@"      selector-x-pos, selector-y-pos, gps-x-pos, gps-y-pos" 
@"     FROM sections" 
@"    ORDER BY section ASC"; 

lSqlResult = sqlite3_prepare_v2(lDb, [lSql UTF8String], -1, &lStmt, NULL); 
NSLog(@"%@", [NSString stringWithUTF8String:sqlite3_errmsg(lDb)]); 

Qué am Estoy haciendo mal?

+0

Congrats on averiguarlo! ¿Podría volver a formatear la pregunta y la respuesta para el legado, para que el mismo error pueda ser resuelto fácilmente por los visitantes futuros? Si no, debes eliminar la pregunta por completo. ¡Gracias! – MPelletier

+1

No se preocupe, simplemente lo editó ... – iFloh

Respuesta

10

Uopon más investigación Encontré mi error. Debería haber abierto el db antes de ejecutar la declaración de preparación.

El código debería tener este aspecto:

sqlite3    *lDb; 
sqlite3_stmt   *lStmt; 
NSNumberFormatter  *lNbrFmt = [[[NSNumberFormatter alloc] init] autorelease]; 

// Define SQL statement 
NSString *lSql = @"SELECT section, language, title, description" 
@"      selector-x-pos, selector-y-pos, gps-x-pos, gps-y-pos" 
@"     FROM sections" 
@"    ORDER BY section ASC"; 

if(sqlite3_open([[fileMethods databasePath] UTF8String], &lDb) == SQLITE_OK) { 
    lSqlResult = sqlite3_prepare_v2(lDb, [lSql UTF8String], -1, &lStmt, NULL); 
    NSLog(@"%@", [NSString stringWithUTF8String:sqlite3_errmsg(lDb)]); 
... 
+0

"La rutina de la biblioteca está fuera de secuencia" - O compruebe que ya no tiene la misma base de datos abierta en otro lugar ... Gracias por el puntero;) – Luke

Cuestiones relacionadas