[英]BAD_ACCESS on SQLITE selection
I am getting EXC_BAD_ACCESS when I attempt to do anything with the value I'm selecting from the local SQLITE database on an iPhone development. 当我尝试使用从iPhone开发中的本地SQLITE数据库中选择的值进行任何操作时,我得到EXC_BAD_ACCESS。 The code for my function is 我函数的代码是
-(void) updateFromDB {
// Setup the database object
sqlite3 *database;
// Open DB
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
NSString *query = [NSString stringWithFormat:@"SELECT MOD_ID FROM MODULE;"];
//NSLog(@"QUERY: %@",query);
// Prepare statement
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK) {
// Execute SQL
while (sqlite3_step(statement) == SQLITE_ROW) {
// Get MOD_IDs
NSInteger MOD_ID = sqlite3_column_int(statement, 0);
NSString *ID = [NSString stringWithFormat:@"%@",MOD_ID];
//=======================
// Get Notice Module Data
//=======================
if (MOD_ID == 1) {
self.noticeModule = [[ModuleSetting alloc] initWithID:ID];
}
}
} else {
NSAssert1(0,@"Error: failed to prepare statement. '%s'", sqlite3_errmsg(database));
}
// Release the compiled statement from memory
sqlite3_finalize(statement);
} else {
sqlite3_close(database);
NSAssert1(0,@"Failed to open database. '%s'",sqlite3_errmsg(database));
}
sqlite3_close(database);
}
The bad access occurs on the line 错误的访问发生在线路上
NSString *ID = [NSString stringWithFormat:@"%@",MOD_ID];
Thanks for any help you can offer! 谢谢你的尽心帮助!
%@
denotes objects. %@
表示对象。 But MOD_ID
seems to be an integer
. 但是MOD_ID
似乎是一个integer
。 So your format should be %d
, 因此,您的格式应为%d
,
NSString *ID = [NSString stringWithFormat:@"%d", MOD_ID];
You can't use %@
in format strings for integers, only for Obj-C objects. 您不能在整数格式字符串中使用%@
,而只能用于Obj-C对象。 For integers, use %d
(or for NSInteger, I think it is recommended to use %ld
). 对于整数,请使用%d
(或对于NSInteger,我认为建议使用%ld
)。
Have a look at the String Format Specifiers guide. 看看《 字符串格式说明符》指南。
MOD_ID不是指针,因此%@是不正确的。
Use below 在下面使用
NSInteger MOD_ID = sqlite3_column_int(statement, 0);
NSString *ID = [NSString stringWithFormat:@"%d",MOD_ID];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.