todas recuperar play musica las historial eliminar como celular canciones borrar biblioteca android android-room android-architecture-components

android - recuperar - como eliminar todas las canciones de spotify



Biblioteca de persistencia de sala. Eliminar todos (7)

A partir de la habitación 1.1.0 puede usar clearAllTables() que:

Elimina todas las filas de todas las tablas que están registradas en esta base de datos como entidades ().

¿Cómo puedo eliminar todas las entradas en una tabla específica usando la Biblioteca de persistencia de sala? Necesito abandonar la tabla, pero no puedo encontrar ninguna información sobre cómo hacerlo.

Solo cuando la base de datos está migrando o para cargar todas las entradas y eliminarlas :)


Combinando lo que dice Dick Lucas y agregando un reinicio automático de otras publicaciones de , creo que esto puede funcionar:

fun clearAndResetAllTables(): Boolean { val db = db ?: return false // reset all auto-incrementalValues val query = SimpleSQLiteQuery("DELETE FROM sqlite_sequence") db.beginTransaction() return try { db.clearAllTables() db.query(query) db.setTransactionSuccessful() true } catch (e: Exception){ false } finally { db.endTransaction() } }


Para usar la sala sin abusar de la anotación @Query primero use @Query para seleccionar todas las filas y colocarlas en una lista, por ejemplo:

@Query("SELECT * FROM your_class_table")

List`<`your_class`>` load_all_your_class();

Ponga su lista en la anotación de eliminación, por ejemplo:

@Delete

void deleteAllOfYourTable(List`<`your_class`>` your_class_list);


Puede crear un método DAO para hacer esto.

@Dao interface MyDao { @Query("DELETE FROM myTableName") public void nukeTable(); }


Si desea eliminar una entrada de la tabla en la sala, simplemente llame a esta función,

@Dao public interface myDao{ @Delete void delete(MyModel model); }

Actualización: y si desea eliminar la tabla completa, llame a la siguiente función,

@Query("DELETE FROM MyModel") void delete();

Nota: Aquí MyModel es un nombre de tabla.


Tuve problemas con eliminar todo el método al usar RxJava para ejecutar esta tarea en segundo plano. Así es como finalmente lo resolví:

@Dao interface UserDao { @Query("DELETE FROM User") fun deleteAll() }

y

fun deleteAllUsers() { return Maybe.fromAction(userDao::deleteAll) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe ({ d("database rows cleared: $it") }, { e(it) }).addTo(compositeDisposable) }


Use clearAllTables() con RXJava como se muestra a continuación para evitar java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.

Completable.fromAction(new Action() { @Override public void run() throws Exception { getRoomDatabase().clearAllTables(); } }).subscribeOn(getSchedulerProvider().io()) .observeOn(getSchedulerProvider().ui()) .subscribe(new Action() { @Override public void run() throws Exception { Log.d(TAG, "--- clearAllTables(): run() ---"); getInteractor().setUserAsLoggedOut(); getMvpView().openLoginActivity(); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { Log.d(TAG, "--- clearAllTables(): accept(Throwable throwable) ----"); Log.d(TAG, "throwable.getMessage(): "+throwable.getMessage()); } });