【发布时间】:2018-09-21 08:45:45
【问题描述】:
我用于执行查询的代码如下:
NSString *score_query = @"Insert into tbl_assessment (Question,Answer,Option1,Option2,Option3,Explanation,Used,ImageName,Reference) values ('All of the following questions would be asked in a lifestyle questionnaire except:','Do you feel any pain in your chest when you perform physical activity?','Does your occupation cause you anxiety (mental stress)?','Does your occupation require extended periods of sitting?','Do you partake in any recreational activities (golf, tennis, skiing, etc.)?','NULL','N','NULL','NULL')";
NSLog(@"%@",score_query);
[database executeQuery:score_query];
我已经动态生成了这个查询。但我已将查询直接添加到字符串中。 但是当我尝试执行这个插入查询时,应用程序在以下函数上崩溃:
- (NSArray )executeQuery:(NSString )sql, ... {
va_list args;
va_start(args, sql);
NSMutableArray *argsArray = [[NSMutableArray alloc] init];
NSUInteger i;
for (i = 0; i < [sql length]; ++i)
{
if ([sql characterAtIndex:i] == '?')
[argsArray addObject:va_arg(args, id)];
}
va_end(args);
NSArray *result = [self executeQuery:sql arguments:argsArray];
[argsArray release];
return result;
}
我用于数据库操作的类的保管箱如下所示: https://www.dropbox.com/s/c4haxqnbh0re41c/Archive%202.zip?dl=0
我已经参考了以下链接,但无法理解。 Sqlite shows EXC_BAD_ACCESS in ios SDK
【问题讨论】:
-
您需要向我们提供您调用该方法的行。
argsArray和sql的值。 -
@Larme App 在 [argsArray addObject:va_arg(args, id)] 上崩溃;这一行。
-
所以代码与SQLite并没有真正的关系。更多的是关于
variadic functions"你应该首先使用这个stackoverflow.com/questions/4804674/… 而不是[sql length]作为循环,因为你可能会发现更多的“?” than" 参数列表中的对象。如果是这种情况,请自己添加NULL?
标签: ios objective-c sqlite exc-bad-access