У меня есть короткий вопрос к учебнику блокнота на веб-сайте Android. Я написал простую функцию в коде учебника, чтобы удалить всю базу данных. Это выглядит так:
public void deleteDatabase() {
this.mDb.delete(DATABASE_NAME, null, null);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, DELETE_ID, 0, "Delete whole Database");
return result;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
mDbHelper.deleteDatabase();
return true;
}
return super.onOptionsItemSelected(item);
}
Но когда я запустил приложение и попытаюсь удалить базу данных, я получу эту ошибку в LogCat:
sqlite возвращен: код ошибки = 1, msg = нет такая таблица: данные
Помогите решить эту проблему. Похоже, что функция deleteDatabase не может попасть в базу данных.
Большое спасибо.
Феликс
Спасибо за сообщения. Теперь я обновил код:
public boolean deleteDatabase(Context context) {
return context.deleteDatabase(DATABASE_NAME);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, DELETE_ID, 0, "Delete whole Database");
return result;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
mDbHelper.deleteDatabase(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Но теперь мне нужно перезапустить приложение, которое удалено из базы данных. Я не работаю во время работы приложения.
Метод delete
, который вы используете из объекта SQLiteDatabase, - это удаление таблиц, а не базы данных.
Посмотрите на метод delete
в Context
Edit:
Попробуйте напрямую позвонить из своей деятельности:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
deleteDatabase(DATABASENAME);
return true;
}
return super.onOptionsItemSelected(item);
}
То, как вы звоните на данный момент, - это удалить базу данных из объекта SQLliteDatabase
, поэтому я думаю, что она не будет удалять базу данных до тех пор, пока на ней больше нет ссылок.
В документации по Android метод удаления удаляет строки из таблицы в базе данных. Он не удаляет саму базу данных.
Я считаю, что вы хотите вместо этого Context.deleteDatabase