Я пытаюсь предоставить опцию в своем приложении для пользователя, чтобы стереть все данные и начать заново. Я пробовал несколько вещей, но никто не работает в том смысле, что данные все еще существуют. Вот моя первая попытка:Как удалить базу данных Android Sqlite Programmatically
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, у него будет более старый номер версии, и приложение не запустится, потому что номер версии на устройстве выше, чем номер версии в коде.
Что еще я могу попробовать?
Вы точно знаете, что названия таблиц верны? Попробуйте сделать execSQL без «IF EXISTS» и посмотреть, генерирует ли система исключение – rickyalbert
Спасибо, я попробовал его и поместил некоторый оператор регистрации, который подтвердил, что таблицы удаляются, однако приложение не будет перезагружаться снова, оно вылетает из-за того, что таблицы не существует, я изучаю –