如何在onUpgrade方法中删除DB?

时间:2014-08-13 14:39:07

标签: java android eclipse sqlite

如何在方法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)。

3 个答案:

答案 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);
}