如何在Android中删除整个数据库?我需要完全删除数据库以便测试数据库创建。我可以删除表,但这是不够的。这是在模拟器中而不是在手机上。
一旦你有了Context并且知道数据库的名称,使用以下代码:
context.deleteDatabase(DATABASE_NAME);
运行此行代码后,数据库应该被删除。
API 16中添加了SQLiteDatabase.deleteDatabase(File file)静态方法。如果您想编写支持旧设备的应用程序,应该如何操作?
我尝试过:file.delete();,但它会破坏SQLiteOpenHelper。
谢谢。
不用担心! 我后来意识到您正在使用Context.deleteDatabase()。Context的这个方法很好用,而且还可以删除日志文件。对我有用。
另外,我发现在执行删除之前需要调用SQLiteOpenHelper.close(),这样我才能使用LoaderManager重新创建它。
只需要在你的 shell 中输入以下命令:
adb shell
cd /data/data
cd <your.application.java.package>
cd databases
su rm <your db name>.db
root@generic_x86:/data/data/com.dslomer64.servyhelperton/databases #
。除了删除、复制和其他操作之外,难道没有一个 dir
或 list files
或 这个目录/文件夹里到底有什么
的命令吗? - DSlomer64ls
命令列出当前文件夹中的文件。 - DSlomer64尝试:
this.deleteDatabase(path);
或者context.deleteDatabase(path);
context.deleteDatabase("database_name.db");
同时在Eclipse中,您可以使用DDMS,这使得操作变得非常简单。
只需确保您的模拟器正在运行,然后切换到Eclipse中的DDMS透视图。您将完全访问文件浏览器,从而可以轻松地进入并删除整个数据库。
当所有连接都关闭时,context.deleteDatabase(DATABASE_NAME)将删除数据库。如果您正在维护用于处理数据库帮助程序的单例实例,则可以轻松关闭已打开的连接。
如果直接实例化多个数据库帮助程序并在多个地方使用它,则即使某些连接处于打开状态,deleteDatabase + killProcess也会完成工作。如果应用场景没有重新启动应用程序的问题,则可以使用此方法。
卸载应用时删除旧的数据库。
在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);
* Just in DataHelper class add
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from " + TABLE_NAME);
2- 删除数据库 - 这意味着清除所有记录,但保留文件名
在活动中
myDb = new DbHelper(this);
myDb.close();
myDb.delAll(getApplicationContext());
recreate();
public void delAll(Context context) {
context.deleteDatabase(DB_NAME);
}