如何以编程方式从Android删除SQLite数据库

我想以编程方式从Android file system删除数据库文件? 我可以有一个shell脚本启动adb轮stream在Android空间运行一个shell脚本来删除数据库吗? 我可以从一个JUnittesting用例(用system()调用)完成这个工作吗?

如何在Android中删除整个数据库? 我需要使整个事情消失,所以我可以testing数据库的创build。 我可以放桌子,但这还不够。 这是在模拟器中,而不是在电话上。

一旦你有你的上下文,并知道数据库的名称,使用:

 context.deleteDatabase(DATABASE_NAME); 

当这一行运行时,数据库应该被删除。

从你的shell中input内容很简单:

 adb shell cd /data/data cd <your.application.java.package> cd databases su rm <your db name>.db 

尝试:

 this.deleteDatabase(path); 

要么

 context.deleteDatabase(path); 

在API 16中添加了SQLiteDatabase.deleteDatabase(File file)静态方法。如果要编写支持较旧设备的应用程序,那么如何执行此操作?

我试过: file.delete();

但是它搅乱了SQLiteOpenHelper。

谢谢。

没关系! 后来我意识到你正在使用Context .deleteDatabase()。 上下文工作很好,也删除了日记。 为我工作。

此外,我发现我需要在删除之前调用SQLiteOpenHelp.close() ,以便我可以使用LoaderManager来重新创build它。

从Eclipse也可以使用DDMS,这很容易。

只要确保你的模拟器正在运行,然后在Eclipse中切换到DDMS的angular度。 您将可以完全访问文件资源pipe理器,这将允许您进入并轻松删除整个数据库。

context.deleteDatabase(DATABASE_NAME); 只有在所有连接都closures的情况下才会删除数据库。 如果你正在维护单例实例来处理你的数据库帮助器 – 很容易closures打开的连接。

通过直接实例化数据库帮助程序在多个位置使用,即使某些连接打开,deleteDatabase + killProcess也会执行该任务。 如果应用程序scheme在重新启动应用程序时没有任何问题,则可以使用此方法。

从应用程序pipe理器,您可以删除整个应用程序的数据。 或者只是它自己的数据。 这包括数据库。

  1. 导航到设置。 您可以在应用程序菜单中进入设置菜单,或者在大多数电话上,通过拉下通知抽屉并点击button。

  2. select应用程序子菜单。 在某些电话上,这个菜单将有一个稍微不同的名字,比如Application Manager。

  3. 向右滑动到所有应用程序列表。 忽略正在运行和已下载的应用程序的列表。 你想要所有的应用程序列表。

  4. select你想要禁用的应用程序。 出现一个属性屏幕,在左上angular有一个用于强制停止的button,另一个用于右上angular的禁用或卸载更新。

  5. 删除数据。

你可以去你的模拟器>设置>应用程序>。 然后单击要从中删除数据库的应用程序,然后单击>清除数据。 。