gpt4 book ai didi

iOS 应用程序在 sqlite3_reset 上崩溃并显示 EXC_BAD_INSTRUCTION

转载 作者:行者123 更新时间:2023-12-02 10:25:03 26 4
gpt4 key购买 nike

由于以下行出现 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()

我们应该始终在返回语句之前完成语句并关闭数据库。不要让数据库保持打开状态。如果您尝试再次打开数据库,则不会完成语句并且不会关闭数据库 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;
}

我希望这对你有帮助......

关于iOS 应用程序在 sqlite3_reset 上崩溃并显示 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45539203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com