如何为我的应用程序取消RoomDatabase
的真空?
我在Room周围构建我的整个应用程序,在某个时刻,一个大表会被删除,然后再次填充。
我尝试使用Query创建一个额外的DAO接口:
@Dao
public interface GenericDao {
@Query("VACUUM")
void vacuum();
}
但我收到错误:
Error:(13, 10) error: UNKNOWN query type is not supported yet. You can use:SELECT, UPDATE, DELETE
有解决方法吗?
基本上我需要的是,一旦我的桌子完全清空,自动增量再次从1开始。
我对数据库设计还不熟悉,所以请理解这是否违反了最佳实践。 是的:我已经筋疲力尽了Google以及我所知道的所有其他平台。
非常感谢提前!
答案 0 :(得分:2)
Dao可以看起来如下:
@Dao
public interface RawDao {
@RawQuery
int vacuumDb(SupportSQLiteQuery supportSQLiteQuery);
}
运行如下查询:
rawDao.vacuumDb(new SimpleSQLiteQuery("VACUUM"));
答案 1 :(得分:0)
有解决方法吗?
在getOpenHelper()
子类上致电RoomDatabase
,获取SupportSQLiteOpenHelper
。在其上调用getWritableDatabase()
即可获得SupportSQLiteDatabase
。然后,由于我认为VACUUM
不返回结果集,请在execSQL("VACUUM")
上调用SupportSQLiteDatabase
。
恕我直言,你不应该对自动增量字段如何增加做出任何假设。基本上我需要的是,一旦我的桌子完全清空,自动增量再次从1开始。