gpt4 book ai didi

ios - sqlite_finalize 不释放对数据库的锁定

转载 作者:行者123 更新时间:2023-11-29 12:36:59 26 4
gpt4 key购买 nike

我正在使用 sqlite 开发 iOS 应用程序。这是一个非常以数据为中心的应用程序,因此我创建了一个名为 prepareQuery 的函数。我永远不会多次访问数据库,因此 cmd 是全局的并且运行良好。

-(BOOL) prepareQuery:(NSString *) query
{
const char *dbPath = [databasePath UTF8String];
if (sqlite3_open(dbPath, &db) == SQLITE_OK)
{
const char *query_stmt = [query UTF8String];
if (sqlite3_prepare_v2(db, query_stmt, -1, &cmd, NULL) == SQLITE_OK)
return YES;
}
return NO;
}

现在我有以下内容(为便于阅读而编辑)

[self prepareQuery:@"SELECT STATEMENT FOR TABLE 1;"];
NSLog(@"Result: %i", sqlite3_step(cmd));
//Work with the 1st query
sqlite3_finalize(cmd);

[self prepareQuery:@"SELECT STATEMENT FOR TABLE 2;"]];
NSLog(@"Result: %i", sqlite3_step(cmd));
//Work with the 2nd query
sqlite3_finalize(cmd);

if ([self prepareQuery:@"INSERT STATEMENT FOR TABLE 1;"])
NSLog(@"Result: %i", sqlite3_step(cmd));
else
NSLog(@"error preparing statement");

我得到以下输出:

Result: 100
Result: 100
Result: 5

这不是我运行多个选择然后完成插入的第一个过程。知道为什么最后的结果是 SQLITE_BUSY 吗?我试过关闭数据库,并将 cmd 设置为 nil。

最佳答案

我发现了问题(我一点击帖子就知道会发生...)

我发布的代码是从不同的程序调用的。那里的所有 15 个陈述都已完成,只有一个除外。我完成了那个并且它起作用了。我不明白为什么我可以在没有完成#4 的情况下运行 7 次选择、1 次更新、7 次更多选择,但它在第二个过程中给出了错误...

关于ios - sqlite_finalize 不释放对数据库的锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26044972/

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