7

我的 Android 应用程序有一个 SQLite 数据库和一个内容提供程序。此 Content Provider 已在应用程序的AndroidManifest.xml. 它没有导出,所以只有我的应用程序可以看到它。

作为重置用户配置文件的一部分,我想完全擦除该数据库并从头开始重新创建它。起初我尝试deleteDatabase()从活动的上下文中调用。这有效,但前提是应用程序关闭并随后重新打开。否则,当我尝试插入说数据库是只读的行时,它会崩溃。我的理解是在调用之前需要先关闭连接deleteDatabase()。然而,据我了解,连接由内容提供者管理,不应手动关闭。

作为替代方案,我使用 中的call()方法ContentResolver调用自定义函数,该函数将删除表中的所有数据并手动重置序列计数。

这可行,但现在我必须手动删除每个表中的数据,并且必须跟踪我将来所做的任何更改。

有没有更好的方法来删除整个数据库并在使用时使用onCreate()my DatabaseHelper( ) 触发器?SQLiteOpenHelperContentProvider

4

1 回答 1

1

想到的一个建议是让您的自定义函数删除表并重新创建它们。您已经拥有在 中创建表的onCreate()代码DatabaseHelper。重构这个可以被DatabaseHelper自定义方法和自定义方法访问的地方。

于 2016-11-25T00:41:51.403 回答