数据库被锁定在iOS中的sqlite3数据库中崩溃

数据库被锁定在iOS中的sqlite3数据库中崩溃,ios,sqlite,Ios,Sqlite,在我当前的应用程序中,我有近10个场景,包括插入、更新、删除和选择数据到sqlite3数据库中。现在,对于每个查询,我都会打开数据库并关闭数据库,这会使我的应用程序非常慢。 我尝试过其他方法,比如在应用程序启动时打开数据库(ApplicationIDBecomeActive:),在应用程序终止时关闭数据库(applicationWillResignActive/applicationWillTerminate:)仅一次。 这只有在我们第一次安装应用程序时才起作用。一旦我删除了当前版本并重新启动应

在我当前的应用程序中,我有近10个场景,包括插入、更新、删除和选择数据到sqlite3数据库中。现在,对于每个查询,我都会打开数据库并关闭数据库,这会使我的应用程序非常慢。
我尝试过其他方法,比如在应用程序启动时打开数据库(ApplicationIDBecomeActive:),在应用程序终止时关闭数据库(applicationWillResignActive/applicationWillTerminate:)仅一次。

这只有在我们第一次安装应用程序时才起作用。一旦我删除了当前版本并重新启动应用程序,它就不起作用了。错误是数据库已锁定。请帮帮我。哪种方式更好。

试着在中打开数据库

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

此方法可在每次启动应用程序时使用,而不是每次打开数据库

你能做什么

1) 在AppDelegate类中初始化NSMutableArray的实例,并将其属性设置为strong和nonatomic

for example @property(strong,nonatomic)NSMutableArray *temp;
2) 在temp中备份数据库,即NSMutableArray对象

3) 执行将数据插入、更新、删除和选择到临时对象(即NSMutableArray对象)中的操作

4) 在后台,在数据库中执行相同的操作。因此,这将阻止您的UI部分


通过这个过程,您将在一个数组中执行所有操作,而不是直接对数据库执行操作。这将有助于避免每次打开数据库,并使应用程序更快一点

这不是一个好主意,当应用程序开始运行时,打开数据库文件,然后关闭它,始终打开数据库并获取数据并关闭连接。尝试为数据库连接类实现singleton模式,或者使用类似于FMDB的sqlite包装器

您确定数据库已正确关闭吗

如果未正确关闭,数据库可能会损坏。 在应用程序结束后,操作系统不应再锁定该文件(当然,如果该应用程序未配置为在后台运行)


关闭数据库时,您确定所有语句都已完成并最终确定吗?

打开和关闭数据库的过程是否正确,或者是否有更好的方法。我如何检查数据库是否已关闭。我正在向数据库中写入2000个联系人,需要时间。我已经在后台运行了这个过程。当我点击一个按钮时,它应该会显示数据库中的所有联系人。导致崩溃的数据库被锁定,Sqlite3_语句为空。@SudhakarTharigoppula我说的是,与其每次打开数据库,不如在数组对象中备份数据库。这将简化你的负担。