我知道我不能在查询中使用DELETE
(顺便说一句,这是一种耻辱),我会收到以下错误:
<i>Error:error: Observable query return type (LiveData, Flowable etc) can only be used with SELECT queries that directly or indirectly (via @Relation, for example) access at least one table.</i>
但我无法使用@Delete(WHERE... xxx)
那么如何通过参数删除特定行?
答案 0 :(得分:82)
实际上,您可以使用@Query
执行删除。
@Query("DELETE FROM users WHERE user_id = :userId")
abstract void deleteByUserId(long userId);
UPDATE或DELETE查询可以返回void或int。如果它是一个int,那么 value是受此查询影响的行数。
答案 1 :(得分:32)
房间的美丽是,我们玩物体。根据您的要求,您可以使用 对于kotlin:
@Delete
fun delete(model: LanguageModel)
for Java:
@Delete
void delete(LanguageModel model)
它将删除存储在db中的具有相同值的确切对象。 LanguageModel是我的模型类,它可以很好地工作。
答案 2 :(得分:8)
您可以使用以下方法通过ID删除
@Query("DELETE FROM yourDB WHERE id = :id")
void deleteById(int id);
用于删除所有行
@Query("DELETE FROM yourDB")
void delete();