2012-06-08 13 views
5

Estoy usando la base de datos sqlite para la aplicación iphone. pero se cuelga en la línea "while loop" mientras se recuperan datos de la base de datos a veces.EXC_BAD_ACCESS en sqlite_step (extracto)

-(void)GetMethod 
{ 

    NSString *query = [[NSString alloc] initWithFormat:@"SELECT * FROM errorlogs"]; 
    sqlite3_stmt *statement;  
    if (sqlite3_prepare_v2(database, [query UTF8String],-1, &statement, nil) == SQLITE_OK) 
    { 
     while (sqlite3_step(statement) == SQLITE_ROW) **// EXC_BAD_ACCESS ON THIS LINE** 
     { 
      char *uid1 = (char *)sqlite3_column_text(statement, 0); 
      NSString *uid = [NSString stringWithFormat:@"%s",uid1]; 
     } 
    } 
    sqlite3_finalize(statement); 
} 

por qué estoy recibiendo este EXC_BAD_ACCESS en el ciclo while.

enter image description here Gracias.

Respuesta

2

De cualquier sqlite3_step(statement) o SQLITE_ROW no se ha inicializado, o ya ha sido liberado. Cuando ejecuta la comprobación de igualdad en el objeto inexistente, arroja EXE_BAD_ACCESS.

¿Está devolviendo las filas?

+0

Gracias por responder. Solo estoy usando el código anterior mencionado en mi pregunta. por lo que sqlite3_step (instrucción) se inicializa y sqlite_row es una constante. Y aún no han sido lanzados. – iDilip

+0

¿'SELECT * FROM erroreslogs' devuelve cualquier fila? Si los registros de errores están vacíos, podría estar comparando contra nada, lo que arrojaría un error. –

3

Trate de usar el marco FMDB, me ayudó mucho en mi proyecto.
Aquí está el enlace: https://github.com/ccgus/fmdb
darle un aspecto si puedes;)

+0

¿Es diferente de la base de datos? en caso afirmativo, no puedo migrar de una base de datos a otra para este error. – iDilip

+0

no, es solo una envoltura para simplificar la codificación, eso es más o menos. además es súper fácil de usar. Una cosa es intentar que los nszombies rastreen tu error, solo presiona alt + cmd + r y hay una casilla de verificación que dice "Habilitar objetos Zombie". –

+0

NSZombie está habilitado en mi proyecto. pero aún está lanzando EXC_BAD_ACCESS en esa línea. – iDilip