sqlite for ios中select prepare语句崩溃
我正在尝试从本地数据库中获取特定记录。为此,我写了下面的代码sqlite for ios中select prepare语句崩溃,ios,objective-c,sqlite,prepared-statement,Ios,Objective C,Sqlite,Prepared Statement,我正在尝试从本地数据库中获取特定记录。为此,我写了下面的代码 - (NSArray *)selectFromActivityTableWithActivityId:(NSString *)activityId { @synchronized(self) { sqlite3_stmt *statement; sqlite3 *database = nil; NSMutableArray *arr = [[NSMutableArray
- (NSArray *)selectFromActivityTableWithActivityId:(NSString *)activityId
{
@synchronized(self)
{
sqlite3_stmt *statement;
sqlite3 *database = nil;
NSMutableArray *arr = [[NSMutableArray alloc] init];
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) != SQLITE_OK)
{
}
else
{
if (sqlite3_prepare_v2(database, "select * from activity_master where activityId=?", -1, &statement, nil) != SQLITE_OK)
{
NSLog(@"error in preparing select:%s",sqlite3_errmsg(database));
}
activityId = [NSString stringWithFormat:@"%lld",[activityId longLongValue]];
if (sqlite3_bind_text(statement, 1, activityId.UTF8String, -1, SQLITE_TRANSIENT) != SQLITE_OK)
{
NSLog(@"error in binding..%d",sqlite3_errcode(database));
}
while (sqlite3_step(statement) == SQLITE_ROW)
{
int record_id = sqlite3_column_int(statement, 0);
int someValue1 = sqlite3_column_int(statement, 1);
NSString *someValue2 = [NSString stringWithFormat:@"%s",sqlite3_column_text(statement, 2)];
int activityId = sqlite3_column_int(statement, 3);
double someValue3 = sqlite3_column_double(statement, 4);
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:record_id], @"id", [NSNumber numberWithInt:someValue1], @"someKey1", someValue2, @"someKey2", [NSNumber numberWithInt:activityId], @"activityId", [NSNumber numberWithDouble:someValue3], @"someKey3", nil];
[arr addObject:dict];
}
if (sqlite3_finalize(statement) != SQLITE_OK)
{
NSLog(@"error in finalizing statement:%s",sqlite3_errmsg(database));
}
if (sqlite3_close(database) != SQLITE_OK)
{}
else
{}
}
statement = nil;
return arr;
}
}
在这段代码中,我在if(sqlite3\u prepare\u v2(数据库,“select*from activity\u master,其中activityId=?”,-1,&statement,nil)!=SQLITE\u OK)
不总是这样,但是在这个语句上有一些时间例外。
我不知道是什么造成了异常。
这是crashlytics上崩溃报告的屏幕截图。
请帮助解决此问题。
提前感谢。感谢您为例外情况保密。但原因很可能是应用程序的其他部分损坏了一些内存。正如我所说的,我不会每次都收到异常,否则我也会在这里发布异常。我真的很想从今天早上开始得到那个异常,但没有得到,只是从crashlytics那里得到了崩溃报告。什么样的异常?必须有一些解释。我记得在2-3个月之前,得到同样的异常是
exc\u bad\u access
。但是,在使用xcode进行连接和调试时,这一次不会发生。