如何在方法onUpgrade上用SQLite上的数据库删除文件?
我试过了:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
context.deleteDatabase(DATABASE_NAME);
onCreate(db);
}
错误:无法解决上下文。
和第二:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
File dbFile = getDatabasePath("your_db_file_name");
boolean deleted = dbFile.delete();
onCreate(db);
}
错误:对于TestDatabase类型,未定义方法getDatabasePath(String)。
答案 0 :(得分:1)
在调用此方法时,您无法删除正在使用的文件。
相反,如果你真的想要删除数据库运行
File dbFile = getDatabasePath("your_db_file_name");
if(dbFile.exists() && dbFile.delete())
{
// Create new database if that is what you want to do.
}
在实际实例化DatabaseHelper
对象之前。在不知道其余代码的情况下,很难提供更详细的解决方案。
答案 1 :(得分:1)
您可以创建一个方法来清理表并在向其添加新值之前调用它
public void delete_ALL_ROWS()
{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
String deleteSQL = "DELETE FROM " + DATABASE_TABLE;
ourDatabase.execSQL(deleteSQL);
ourHelper.close();
}
答案 2 :(得分:1)
在onUpgrade函数中,您应该只运行drop table语句
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// delete our old table
db.execSQL("DROP TABLE IF EXISTS " + tableName);
// create our new table
onCreate(db);
}