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

我想从 Android file system程序删除数据库文件?我可以有一个 shell 脚本启动 adb,然后在 Android 空间中运行一个 shell 脚本来删除数据库吗?我是否可以在 JUnit测试用例(使用 system()调用)中完成这项工作?

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

203106 次浏览

从 shell 中输入很简单:

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

在 Eclipse 中你也可以使用 DDMS,这使得它非常简单。

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

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

context.deleteDatabase(DATABASE_NAME);

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

在 API 16中添加了 SQLiteDatabase.delete teDatabase (File File)静态方法。如果你想编写支持旧设备的应用程序,你该怎么做?

我试过: Delete () ;

但它搞砸了 SQLiteOpenHelper。

谢谢。

算了! 我后来意识到您正在使用 背景.delete teDatabase ()。上下文一个工程伟大,并删除杂志也。我没问题。

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

Delete teDatabase (DATABASE _ NAME) ; 仅当所有连接都关闭时才删除数据库。如果您正在维护单例实例来处理数据库助手-关闭打开的 Connection 很容易。

如果通过直接实例化在多个位置使用数据库帮助器,那么哪怕打开了一些连接,delteDatabase + kill Process 也会执行该任务。如果应用程序场景在重新启动应用程序时没有任何问题,则可以使用此方法。

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

  1. 导航到 Settings 你的应用程序菜单,或者,在大多数手机上,通过下拉通知 抽屉里有一个按钮

  2. 选择 Apps 子菜单。 在一些手机上,这个菜单会有一个 名称略有不同,如 Application Manager

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

  4. 选择您希望禁用的应用程序 在左上角有一个“强制停止”按钮,另一个按钮用于其中一个 禁用或卸载右上角的更新。

  5. 删除数据。

试试:

this.deleteDatabase(path);

或者

context.deleteDatabase(path);
context.deleteDatabase("database_name.db");

这可能对某人有帮助。你必须提到延期,否则,它不会工作。

我使用 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));
}

卸载应用程序时删除旧的数据库。

AndroidManifest.xml中的应用程序标记中设置 Android: allowBackup = “ false”修复了这个问题。似乎出于某种奇怪的原因,每次我部署应用程序时,Android 操作系统都会从备份中恢复。

您可以创建一个 当前数据库路径的文件对象,然后删除它,因为我们从文件夹中删除文件

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

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

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

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