在我当前的应用程序中,我有近10种插入,更新,删除和选择数据进出 sqlite3 数据库的方案。现在,对于每个查询,我打开数据库并关闭数据库,这使我的应用程序非常慢
我尝试过其他方式,例如在应用(applicationDidBecomeActive:)
启动时打开数据库,并在应用仅终止(applicationWillResignActive/ applicationWillTerminate:)
一次时关闭数据库。
这仅在我们第一次安装应用程序时才有效。一旦我删除了当前版本并重新启动应用程序无效。错误是数据库被锁定。请帮我。哪种方式更好。
答案 0 :(得分:0)
而不是每次都打开你的数据库
你能做什么
1)在AppDelegate类中初始化NSMutableArray的实例,并将其属性设置为strong和nonatomic。
for example @property(strong,nonatomic)NSMutableArray *temp;
2)在temp,NSMutableArray对象
中备份数据库3)执行插入,更新,删除和选择数据到temp的操作,即NSMutableArray对象
4)在后台,在数据库中执行相同的操作。因此,这将阻止您的UI部分。
通过此过程,您将在数组中执行所有操作,而不是直接执行数据库。这将有助于不每次都打开您的数据库,并使您的应用程序更快一点。
答案 1 :(得分:0)
您确定您的数据库已正确关闭吗?
如果未正确关闭,您的数据库可能会损坏。 在应用程序结束之后,操作系统不应再锁定该文件(如果此应用程序未配置为在后台运行)。
关闭数据库时,您确定所有语句都已完成并最终确定吗?
答案 2 :(得分:-1)
尝试在
中打开您的数据库- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
每次启动应用程序时都会使用此方法
答案 3 :(得分:-1)
当应用程序变为操作时打开关闭db-file并且当转到后台然后关闭它时,这不是一个好主意,总是打开db并获取数据并关闭连接。尝试为数据库连接类实现单例模式或使用像FMDB一样的sqlite包装器。