gpt4 book ai didi

iphone - iPhone 上的 SQLite 批量插入不起作用

转载 作者:行者123 更新时间:2023-12-03 17:30:57 25 4
gpt4 key购买 nike

我已经为这个看似简单的问题苦苦挣扎了 48 个小时,但仍没有找到解决方案。所以我希望有人能够帮助我。

我正在构建一个应用程序,它使用本地(SQLite)数据库和在线数据库(PHP/MYSQL)的组合。该应用程序即将完成。检查是否有泄漏,工作顺利。然而,最后一部分是我一直在努力解决的部分。

启动时,我希望应用程序检查在线数据库是否有更改以及是否有更改。我希望它下载并解析包含更改的 xml 文件。到目前为止一切都运行良好。但是,当我尝试将解析的数据批量插入数据库时​​,应用程序崩溃,并给出 NSInternalInconsistency 错误。由于数据库返回SQLITE_MISUSE。我已经做了很多谷歌搜索,但仍然无法解决我的问题。所以我把代码放在这里,希望有人能帮我解决这个问题。

而且我知道我应该为此使用核心数据。但这是我正在努力解决的最后一部分,我现在非常不愿意更改我的整个代码。核心数据必须包含在更新中。

这是我收到的错误:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“插入数据时出错。 '库例程调用不按顺序''

这是我的代码:

-(void)UpdateDatabase:(const char *)_query NewValues:(NSMutableArray *)_odb dbn:(NSString *)_dbn dbp:(NSString *)_dbp  
{
sqlite3 *database;
NSMutableArray *NewValues = _odb;
int i;
const char *query = _query;
sqlite3_stmt *addStmt;
for (i = 1; i < [NewValues count]; i++)
{
if(sqlite3_prepare_v2(database, query, -1, &addStmt, NULL) == SQLITE_OK)
{
sqlite3_bind_text(addStmt, 1, [[[NewValues objectAtIndex:i] name] UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [[[NewValues objectAtIndex:i] city]UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_double(addStmt, 3, [[[NewValues objectAtIndex:i] lat] doubleValue]);
sqlite3_bind_int(addStmt, 4, [[[NewValues objectAtIndex:i] long] doubleValue]);
sqlite3_bind_int(addStmt, 5, [[[NewValues objectAtIndex:i] code] intValue]);
}
if(SQLITE_DONE != sqlite3_step(addStmt)) {
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
}
//Reset the add statement.
sqlite3_reset(addStmt);
}
}

最佳答案

我在寻找其他东西时偶然发现了这一点。我认为 App_beginner 最终注意到他在尝试使用数据库之前从未打开过数据库。

sqlite3_open([dbPath UTF8String], &database);

只是想我会为其他人发布(似乎是答案)

关于iphone - iPhone 上的 SQLite 批量插入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159057/

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