我想在我的应用程序中为用户提供一个选项以清除所有数据并重新开始。我已经尝试了一些东西,但似乎没有任何工作,因为数据仍然存在。这是我的第一次尝试:如何以编程方式删除Android Sqlite数据库
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运行应用程序时,它将具有较旧的版本号,并且该应用程序无法启动,因为设备上的版本号比代码中的版本号更高。
我还能试试吗?
你确定表名是正确的吗?试着做没有'IF EXISTS'的execSQL,看看系统是否抛出异常 – rickyalbert 2014-11-05 19:06:38
谢谢我试了一下,并且放了一些确认表被删除的日志语句,但是应用程序不会再重新启动,它崩溃了,不存在,我正在调查 – 2014-11-05 19:40:33