Подтвердить что ты не робот

Как удалить все элементы из SQLite в Android

Я хотел бы создать приложение, в котором пользователь нажимает кнопку, и база данных SQLite очищается. Вот что я пробовал до сих пор:

db.delete(TABLE_NAME, null, null);

Что я делаю неправильно?

4b9b3361

Ответ 1

Ваш вызов delete() верен. Вы получили доступную для записи базу данных? Ниже приведен пример метода, использующего delete:

/**
 * Remove all users and groups from database.
 */
public void removeAll()
{
    // db.delete(String tableName, String whereClause, String[] whereArgs);
    // If whereClause is null, it will delete all rows.
    SQLiteDatabase db = helper.getWritableDatabase(); // helper is object extends SQLiteOpenHelper
    db.delete(DatabaseHelper.TAB_USERS, null, null);
    db.delete(DatabaseHelper.TAB_USERS_GROUP, null, null);
}

Ответ 2

db.delete(TABLE_NAME, null, null); является правильным синтаксисом для удаления всех строк в таблице. Но я думаю, что вы получили бы имя таблицы напрямую, не заключая ее в двойные кавычки. Попробуйте сделать это

db.delete("TABLE_NAME", null, null);

Это может помочь:)

Ответ 3

Фактически другим способом я сделал это, чтобы DROP таблицы, а затем просто вызвать метод onCreate для SQLiteDatabase. Я не знаю, какой из них наиболее эффективен Delete или DROP, потому что я не очень глубоко вник в то, насколько эффективен каждый метод, но он отлично работает для меня, потому что в моей исходной базе данных у меня установлены некоторые значения по умолчанию когда я вызываю метод onCreate для базы данных, у меня есть некоторые методы PUT. Это сохраняет репликацию кода. (вместо удаления, а затем puts я получаю многоцелевую функцию из моей функции onCreate).

Я называю это reset. Поэтому вам просто нужно сделать db.reset(), а затем значения по умолчанию добавляются в onCreate после создания ваших таблиц.

public void reset () throws SQLException {
    db = DBHelper.getWritableDatabase ();
    db.execSQL ("drop table "+TABLE_NAME);
    db.close ();
    this.DBHelper.onCreate (this.db);
}

Ответ 4

Используйте этот код для очистки всего содержимого базы данных

Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
String tableName="";
  if (c.moveToFirst()) {

      while ( !c.isAfterLast() ) {

          tableName = c.getString( c.getColumnIndex("name"));
          if(!tableName.equals('android_metadata')){
            db.execSQL("DROP TABLE '"+tableName+"'");
          }
          c.moveToNext();
      }
  }

c.close();

Ответ 5

SQLiteDatabase db = this.getWritableDatabase(); //get database
        db.execSQL("DELETE FROM tablename"); //delete all rows in a table
db.close();

Ответ 6

для классического оператора mysql:

SQLiteDatabase sqLiteDatabase = context.openOrCreateDatabase(Database.DATABASE_NAME, Context.MODE_PRIVATE, null, null);
sqLiteDatabase.execSQL("DELETE FROM " + tableName1);
sqLiteDatabase.execSQL("DELETE FROM " + tableName2);
sqLiteDatabase.execSQL("DELETE FROM " + tableName3);
sqLiteDatabase.execSQL("DELETE FROM " + tableName4);

работал отлично. удачи:)
ps.: без start/endtransaction или closeDatabase...

Ответ 7

Одна вещь, которую вы могли бы попробовать при разработке на устройстве:

настройки → приложения → (ваше имя приложения) → Хранение → очистить кеш и очистить данные

очистив данные приложения и кеш приложения, вы также уничтожите базу данных sql.