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

时间:2010-12-10 05:47:13

标签: android sqlite

我想以编程方式从Android file system删除数据库文件?我可以使用shell脚本启动adb,然后在Android空间中运行shell脚本来删除数据库吗?我可以在JUnit测试用例(system()调用)中完成此操作吗?

如何在Android中删除整个数据库?我需要让整个事情消失,这样我才能测试数据库创建。我可以放桌子,但这还不够。这是在模拟器中,而不是在手机上。

12 个答案:

答案 0 :(得分:401)

获得Context并知道数据库的名称后,请使用:

context.deleteDatabase(DATABASE_NAME);

运行此行时,应删除数据库。

答案 1 :(得分:13)

从shell中输入很简单:

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

答案 2 :(得分:11)

API 16中添加了SQLiteDatabase.deleteDatabase(文件文件)静态方法。如果要编写支持旧设备的应用程序,该怎么做?

我尝试过: file.delete();

但它弄乱了SQLiteOpenHelper。

感谢。

从来没有想过!我后来意识到你正在使用 Context .deleteDatabase()。 Context一个很好用,也删除了期刊。适合我。

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

答案 3 :(得分:10)

尝试:

this.deleteDatabase(path); 

context.deleteDatabase(path);

答案 4 :(得分:6)

同样来自Eclipse,您可以使用DDMS,这非常容易。

确保您的模拟器正在运行,然后在Eclipse中切换到DDMS透视图。您将拥有对文件资源管理器的完全访问权限,这将允许您进入并轻松删除整个数据库。

答案 5 :(得分:4)

context.deleteDatabase("database_name.db");

这可能会对某人有所帮助。您必须提到扩展程序,否则它将无法正常工作。

答案 6 :(得分:3)

context.deleteDatabase(DATABASE_NAME);仅在关闭所有连接时才会删除数据库。如果要维护单例实例以处理数据库帮助程序 - 则很容易关闭打开的Connection。

通过直接实例化使数据库helper在多个地方使用,即使某些连接打开,deleteDatabase + killProcess也会完成这项工作。如果应用程序方案在重新启动应用程序时没有任何问题,则可以使用此方法。

答案 7 :(得分:0)

我使用Android数据库删除方法并成功删除了数据库

public bool DeleteDatabase()
        {
            var dbName = "TenderDb.db";
            var documentDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentDirectoryPath, dbName);
            return Android.Database.Sqlite.SQLiteDatabase.DeleteDatabase(new Java.IO.File(path));
        }

答案 8 :(得分:0)

在卸载应用程序时删除旧的Db。

AndroidManifest.xml 的应用程序标记中设置 android:allowBackup =“ false” 可以解决此问题。似乎出于某种奇怪的原因,每次我部署应用程序时,Android OS都从备份中还原。

答案 9 :(得分:0)

您可以创建当前数据库路径的文件对象,然后在我们从文件夹中删除文件时将其删除

    File data = Environment.getDataDirectory();
    String currentDBPath = "/data/com.example.demo/databases/" + DATABASE_NAME;
    File currentDB = new File(data, currentDBPath);
    boolean deleted = SQLiteDatabase.deleteDatabase(currentDB);

答案 10 :(得分:0)

更改资产中数据库的结构后,已使用以下内容对设备上的数据库进行“格式化”。当我希望再次从资产中读取数据库时,我只是在MainActivity中取消注释该行。这会将设备数据库的值和结构重置为与资产文件夹中已占用的数据库匹配。

    //database initialization. Uncomment to clear the database
    //deleteDatabase("questions.db");

接下来,我将实现一个用于运行deleteDatabase的按钮,以便用户可以重置其在游戏中的进度。

答案 11 :(得分:-2)

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

  1. 导航至设置。您可以进入设置菜单 您的应用菜单,或者在大多数手机上,通过下拉通知 抽屉并点击那里的按钮。

  2. 选择应用程序子菜单。在某些手机上,此菜单会有 稍微不同的名称,例如“应用程序管理器”。

  3. 向右滑动即可 所有应用列表。忽略正在运行和已下载的应用列表。 您想要所有应用列表。

  4. 选择您要停用的应用。将显示属性屏幕 一个按钮用于左上方的强制停止,另一个用于另一个 在右上方禁用或卸载更新。

  5. 删除数据。