如何 VACUUM RoomDatabase?
How to VACUUM RoomDatabase?
如何为我的应用程序 VACUUM RoomDatabase
?
我围绕 Room 构建了我的整个应用程序,在某个时候,一个大 table 被定期删除,然后又被填充。
我试图用查询创建一个额外的 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
有解决办法吗?
基本上我需要的是,一旦我的 Table 完全清空,Autoincrement 再次从 1 开始。
我对数据库设计还很陌生,所以如果这违反最佳实践,请谅解。
是的:我用尽了 Google 和我所知道的所有其他平台。
非常感谢!
Is there a workaround?
在您的 RoomDatabase
子类上调用 getOpenHelper()
,以获得 SupportSQLiteOpenHelper
。对其调用 getWritableDatabase()
以获得 SupportSQLiteDatabase
。然后,因为我认为 VACUUM
returns 不是结果集,所以在 SupportSQLiteDatabase
.
上调用 execSQL("VACUUM")
Basically what I need is, that once my Table gets completely emptied, Autoincrement starts at 1 again.
恕我直言,您不应该对自动增量字段如何递增做出任何假设。
Dao 可以如下所示:
@Dao
public interface RawDao {
@RawQuery
int vacuumDb(SupportSQLiteQuery supportSQLiteQuery);
}
运行 这样的查询:
rawDao.vacuumDb(new SimpleSQLiteQuery("VACUUM"));
如何为我的应用程序 VACUUM RoomDatabase
?
我围绕 Room 构建了我的整个应用程序,在某个时候,一个大 table 被定期删除,然后又被填充。
我试图用查询创建一个额外的 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
有解决办法吗?
基本上我需要的是,一旦我的 Table 完全清空,Autoincrement 再次从 1 开始。
我对数据库设计还很陌生,所以如果这违反最佳实践,请谅解。 是的:我用尽了 Google 和我所知道的所有其他平台。
非常感谢!
Is there a workaround?
在您的 RoomDatabase
子类上调用 getOpenHelper()
,以获得 SupportSQLiteOpenHelper
。对其调用 getWritableDatabase()
以获得 SupportSQLiteDatabase
。然后,因为我认为 VACUUM
returns 不是结果集,所以在 SupportSQLiteDatabase
.
execSQL("VACUUM")
Basically what I need is, that once my Table gets completely emptied, Autoincrement starts at 1 again.
恕我直言,您不应该对自动增量字段如何递增做出任何假设。
Dao 可以如下所示:
@Dao
public interface RawDao {
@RawQuery
int vacuumDb(SupportSQLiteQuery supportSQLiteQuery);
}
运行 这样的查询:
rawDao.vacuumDb(new SimpleSQLiteQuery("VACUUM"));