Я пытаюсь использовать базу данных 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;
}