Cómo llamar a sqlite3_errmsg para saber por qué falla sqlite3_prepare_v2

La function basada en C sqlite3_prepare_v2 está regresando 1. Simplemente quiero saber el post de error en forma legible y corregir mi código. Estaba aprendiendo esto como un tutorial de blogs de raywinderlich. Me he encontrado con sqlite3_errmsg y no tengo idea de cómo usar la function sqlite3_errmsg .

Aunque la misma pregunta se ha hecho aquí , lamentablemente aún no se ha respondido.

Quiero saber que el error y la corrección serán muy apreciados. Gracias.

 - (NSArray *)failedBankInfos { NSMutableArray *retval = [[NSMutableArray alloc]init]; NSString *query = @"SELECT id, name, city, state FROM failed_banks ORDER BY close_date DESC"; sqlite3_stmt *statement; int tmp = sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil); NSLog(@"%i",tmp); // printing 1 if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { int uniqueId = sqlite3_column_int(statement, 0); char *nameChars = (char *) sqlite3_column_text(statement, 1); char *cityChars = (char *) sqlite3_column_text(statement, 2); char *stateChars = (char *) sqlite3_column_text(statement, 3); NSString *name = [[NSString alloc] initWithUTF8String:nameChars]; NSString *city = [[NSString alloc] initWithUTF8String:cityChars]; NSString *state = [[NSString alloc] initWithUTF8String:stateChars]; NSLog(@"name is : %@",name); NSLog(@"city is : %@",city); FailedBankInfo *info = [[FailedBankInfo alloc] initWithUniqueId:uniqueId name:name city:city state:state]; [retval addObject:info]; } sqlite3_finalize(statement); } else { // if part is failing and control is arriving in else. } return retval; } 

Puedes usar sqlite3_errmsg() como:

 NSLog(@"Database Error Message : %s", sqlite3_errmsg(_database)); 

También puedes usar sqlite3_errstr() .

Los sqlite3_errmsg () y sqlite3_errmsg16 () devuelven text en inglés que describe el error, ya sea como UTF-8 o como UTF-16, respectivamente. La memory para contener la cadena de posts de error se administra internamente. La aplicación no necesita preocuparse por liberar el resultado. Sin embargo, la cadena de error puede sobrescribirse o desasignarse mediante llamadas posteriores a otras funciones de interfaz SQLite.

La interfaz sqlite3_errstr () devuelve el text en inglés que describe el código de resultado, como UTF-8. La memory para contener la cadena de posts de error se administra internamente y la aplicación no debe liberarla.

Mensajes de error de SQLite de reference