iPhone и iPad: выполнение запроса «выбрать * из чего-либо» в базе данных SQLite - PullRequest
0 голосов
/ 29 января 2011

Я пытаюсь использовать базу данных SQLite в своем приложении для iPad, и вот моя функция, чтобы сделать запрос:

- (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];
}

, если я позвоню [self executeQuery:"select name from table1"];, все работает нормально.Но если я вызываю [self executeQuery:"select * from cars"];, приложение вылетает, сообщая мне, что NSMutableArray dataArray - неправильная переменная, в которой нужно установить результаты запроса.

Итак, как я могу сделать "select * form table1""запрос и сохранить результаты?

Спасибо!

РЕДАКТИРОВАТЬ: Вот мой метод loadTimesCallback:

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;
}

1 Ответ

1 голос
/ 29 января 2011

Я следовал этому учебнику (посмотрите в пятом абзаце) и решил всю мою проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...