我正在尝试在我的iPad应用程序中使用SQLite数据库,这是我的查询功能:
- (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;
}