我的Android应用程序有一个SQLite数据库和一个内容提供程序。此内容提供商已在应用程序的AndroidManifest.xml
中注册。它不会被导出,所以只有我的应用可以看到它。使用内容提供程序时重新创建数据库
作为重置用户配置文件的一部分,我想彻底清除这个数据库并从头开始重新创建它。起初,我尝试从活动的上下文中调用deleteDatabase()
。这是有效的,但前提是应用程序关闭后再重新打开。否则,当我试图插入表示数据库是只读的行时,它会崩溃。我的理解是在拨打deleteDatabase()
之前需要先关闭连接。然而,据我所知,连接由Content Provider管理,不应该手动关闭。
作为替代方法,我使用ContentResolver
中的call()
方法来调用自定义函数,该函数将删除表中的所有数据并手动重置顺序计数。
这可行,但现在我必须手动删除每张表中的数据,并且必须跟踪我在将来做出的任何更改。
是否有更好的方法来删除整个数据库,并有我DatabaseHelper
(SQLiteOpenHelper
)触发的onCreate()
使用ContentProvider
什么时候?
为什么要重新创建而不仅仅是删除所有内容? –
@DiegoTorresMilano我想我只是试图快速刷新数据库到一个新的状态,而不必删除每个表/行(因此试图调用deleteDatabase),让初始设置过程重新配置新的配置文件,因为它会在第一次跑。目前我正在删除所有数据行,我只是很好奇,如果有一些东西接近调用deleteDatabase本来可以工作的。 – Programmer001
您不应该在打开文件时尝试删除该文件。 –