[英]iOS App crashes on sqlite3_reset with EXC_BAD_INSTRUCTION
由于以下行中的EXC_BAD_INSTRUCTION(code = EXC_i386_INVOP)错误,我的iOS应用在Xcode模拟器中终止
sqlite3_reset(stmt);
完整的代码块是
-(BOOL)containsPendingSignature
{
sqlite3_stmt *stmt = nil;
const char* sql = "SELECT Count(*) FROM pending_signatures";
if(sqlite3_prepare_v2(database, sql, -1, &stmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database));
int rowCount = 0;
if(sqlite3_step(stmt) == SQLITE_ROW) {
rowCount = sqlite3_column_int(stmt, 0);
}
sqlite3_reset(stmt);
sqlite3_finalize(stmt);
return rowCount > 0;
}
有人可以在这里提出问题吗,谢谢。
此类问题的解决方案是,您可能在下面的声明中丢失了。
sqlite3_finalize(statement);
sqlite3_close(database);
每次之后
sqlite3_open()
sqlite3_prepare_v2()
我们应该始终完成语句并在return语句之前关闭数据库。 不要让数据库保持打开状态。 如果您尝试再次将其打开,则无需最终声明,也无需关闭数据库sqlite3_open()
要么
sqlite3_prepare_v2()
这将导致有关数据库的EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
。
-(BOOL)containsPendingSignature
{
sqlite3_stmt *stmt = nil;
const char* sql = "SELECT Count(*) FROM pending_signatures";
if(sqlite3_prepare_v2(database, sql, -1, &stmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database));
int rowCount = 0;
if(sqlite3_step(stmt) == SQLITE_ROW) {
rowCount = sqlite3_column_int(stmt, 0);
}
sqlite3_finalize(statement);
sqlite3_close(database);
return rowCount > 0;
}
我希望这能帮到您 ....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.