我正在尝试为我的应用程序提供一个选项,让用户清除所有数据并重新开始。我尝试了一些方法,但似乎都不起作用,因为数据仍然存在。以下是我的第一次尝试:
public void clearDatabase(Context context) {
DatabaseHelper helper = new DatabaseHelper(context);
SQLiteDatabase database = helper.getWritableDatabase();
database.delete(Constants.TRANSACTION_TABLE, null, null); //erases everything in the table.
database.delete(Constants.CUSTOMER_TABLE, null, null);
database.delete(Constants.RETAILER_TABLE, null, null);
database.close();
}
这似乎有效,但是应用程序在重新启动时会崩溃。
然后我尝试从SQliteOpenHelper子类中使用此代码。
public void resetDatabase() {
SQLiteDatabase database = getWritableDatabase();
database.execSQL("DROP TABLE IF EXISTS customer_table");
database.execSQL("DROP TABLE IF EXISTS transaction_table");
database.execSQL("DROP TABLE IF EXISTS retailer_table");
database.execSQL(CREATE_CUSTOMER_TABLE);
database.execSQL(CREATE_TRANSACTION_TABLE);
database.execSQL(CREATE_RETAILER_TABLE);
database.close();
}
这个问题并不会在重启后崩溃,但数据仍然存在。唯一有效的方法是通过编程更改版本号。但是,当我从IDE运行应用程序时,它将具有旧版本号,因为设备上的版本号高于代码中的版本号,导致应用程序无法启动。
我还能尝试什么?