Android Room 1.1.0现在提供方法clearAllTables()
。
Altough这个方法非常方便,它不会清除由autoGenerate()
生成的自动增量值,如官方文档中所述。
我还想清除数据库中所有表的主键,而不必为每个表调用单独的查询。
答案 0 :(得分:0)
基于this answer,我假设这个SQL语句可以工作:
DELETE FROM sqlite_sequence WHERE name='table1' OR name='table2';
......根据需要链接尽可能多的OR
条款。
但是,sqlite_sequence
不是会议室管理的表,因此您可能需要使用SupportSQLiteDatabase
执行此SQL。您可以在getOpenHelper().getWritableDatabase()
上致电RoomDatabase
来获取其中一个。
但是,我不打扰这个。恕我直言,你不应该依赖AUTOINCREMENT
的任何特定行为(例如,始终从某个特定值开始)。在这种情况下,不清楚黑客SQLite重置这些值有什么价值。