Pertanyaan Perpustakaan ruang persistensi. Hapus semua


Bagaimana cara menghapus semua entri pada tabel spesifik menggunakan Perpustakaan Persistensi Ruang? Saya harus menjatuhkan meja, tetapi saya tidak dapat menemukan informasi bagaimana melakukan ini.

Hanya ketika database bermigrasi atau memuat semua entri dan menghapusnya :)


75
2018-05-29 14:08


asal


Jawaban:


Anda dapat membuat metode DAO untuk melakukan ini.

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

204
2018-05-29 19:45



Pada Ruang 1.1.0 Kamu dapat memakai clearAllTables () yang:

Menghapus semua baris dari semua tabel yang terdaftar ke database ini sebagai entitas ().


25
2018-03-28 22:12



Jika ingin menghapus entri dari tabel di Ruang cukup panggil fungsi ini,

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

Memperbarui: Dan jika Anda ingin menghapus tabel lengkap, panggil fungsi di bawah ini,

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

catatan: Sini Model saya adalah Nama Tabel.


8
2018-01-15 10:42



Untuk sebuah Migration, Anda lulus Sebuah SupportSQLiteDatabase dan dapat menghapus apa yang Anda inginkan melalui execSQL().

Di luar itu, Anda bisa menelepon getOpenHelper() pada Anda RoomDatabase dan dapatkan SupportSQLiteDatabase dari itu, sekali lagi menelepon execSQL() untuk menghapus apa yang kamu inginkan.

Saya tidak melihat cara berbasis anotasi untuk menghapus semua entitas, kecuali jika Anda memiliki semuanya dalam memori dan dapat meneruskannya ke @Deletemetode -annotated pada Anda Dao.


4
2018-05-29 14:13



Menggabungkan apa Dick Lucas mengatakan dan menambahkan reset autoincremental dari posting StackOverFlow lainnya, saya pikir ini dapat bekerja:

        fun clearAndResetAllTables(): Boolean {
        if (db== null) 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()
        }
    }

1
2017-07-16 15:09