我的Android应用程序有一个SQLite数据库和一个内容提供程序。此内容提供商已在应用的AndroidManifest.xml
中注册。它不会导出,因此只有我的应用才能看到它。
作为重置用户个人资料的一部分,我想彻底擦除此数据库并从头开始重新创建。起初我尝试从活动的上下文中调用deleteDatabase()
。这有效,但仅在应用程序关闭后重新打开。否则,当我尝试插入表示数据库是只读的行时,它将崩溃。我的理解是在调用deleteDatabase()
之前需要先关闭连接。然而,据我所知,连接由内容提供商管理,不应手动关闭。
作为替代方案,我使用call()
中的ContentResolver
方法调用自定义函数,该函数将删除表中的所有数据并手动重置序列计数。
这样可行,但现在我必须手动删除每个表中的数据,并且必须跟踪我将来做出的任何更改。
使用onCreate()
时,是否有更好的方法可以删除整个数据库并使DatabaseHelper
SQLiteOpenHelper
触发{?}}?
答案 0 :(得分:1)
我想到的一个建议是让您的自定义函数删除表并重新创建它们。您已经拥有了在onCreate()
DatabaseHelper
中创建表格的代码。重构这个DatabaseHelper
和自定义方法都可以访问的地方。