我想在我的應用程序中爲用戶提供一個選項以清除所有數據並重新開始。我已經嘗試了一些東西,但似乎沒有任何工作,因爲數據仍然存在。這是我的第一次嘗試:如何以編程方式刪除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