iPhone and iPad : Doing a "select * from something" query in a SQLite database
        Posted  
        
            by 
                Abramodj
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Abramodj
        
        
        
        Published on 2011-01-29T15:13:30Z
        Indexed on 
            2011/01/29
            15:25 UTC
        
        
        Read the original article
        Hit count: 286
        
Hi folks, i'm trying to use the SQLite data base in my iPad app, and here's my function to make a query:
- (void)executeQuery:(char*)query
{
    NSString *file = [self getWritableDBPath];
 NSFileManager *fileManager = [NSFileManager defaultManager];
 BOOL success = [fileManager fileExistsAtPath:file]; 
 // If its not a local copy set it to the bundle copy
 if(!success) {
  //file = [[NSBundle mainBundle] pathForResource:DATABASE_TITLE ofType:@"db"];
  [self createEditableCopyOfDatabaseIfNeeded];
 }
 dataArray = NULL;
 dataArray = [NSMutableArray array];
    sqlite3 *database = NULL;
    if (sqlite3_open([file UTF8String], &database) == SQLITE_OK) {
        sqlite3_exec(database, query, loadTimesCallback, dataArray, NULL);
    }
    sqlite3_close(database);
    [self logResults];
}
if I call [self executeQuery:"select name from table1"]; everything is working fine. But if i call [self executeQuery:"select * from cars"]; the app crashes telling me that the NSMutableArray dataArray is not the right kind of variable where to set the query results.
So, how can i do a "select * form table1" query, and store the results?
Thanks!
EDIT: Here's my loadTimesCallback method:
static int loadTimesCallback(void *context, int count, char **values, char **columns)
{
    NSMutableArray *times = (NSMutableArray *)context;
    for (int i=0; i < count; i++) {
        const char *nameCString = values[i];
        [times addObject:[NSString stringWithUTF8String:nameCString]];
    }
    return SQLITE_OK;
}
© Stack Overflow or respective owner