我们现有的SQlite3数据库实现在iOS v8.4.1上完美运行。 在iOS9上,数据库模块无法按照预期工作。在调查此问题时,我们发现SQlite3_changes未提供自上次修改以来DB中发生的更改计数。
有没有人遇到过类似的问题?谢谢你的帮助......
我们定义了一种按需插入记录的方法。方法: 1.如果可以使用sqlite3_open打开数据库 2.准备SQL语句 - sqlite3_prepare_v2 3.逐个执行SQL语句 - sqlite3_step,直到完成所有记录。 4.对每个执行的sql语句执行sqlite3_reset和sqlite3_finalize。 5.使用sqlite3_exec提交事务 6. sqlite3_close - 最后关闭数据库。
在后续调用中,我们检查DB更改,该更改始终返回0.
答案 0 :(得分:1)
请发布一个显示问题的小型可编辑示例。这在iOS 9模拟器中工作正常:
sqlite3 *database = NULL;
int err = sqlite3_open( ":memory:", &database );
if ( err == 0 )
err = sqlite3_exec(database, "Create table if not exists MyTable (MyColumn integer);", NULL, NULL, NULL );
// prints "1"
err = sqlite3_exec(database, "insert into MyTable values(0);", NULL, NULL, NULL );
if ( err == 0 )
NSLog( @"changes: %d", sqlite3_changes(database) );
// prints "3"
err = sqlite3_exec(database, "insert into MyTable values (0), (1), (2);", NULL, NULL, NULL );
if ( err == 0 )
NSLog( @"changes: %d", sqlite3_changes(database) );
答案 1 :(得分:1)