Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android房间@Delete,带参数_Java_Android_Sql_Android Room - Fatal编程技术网

Java Android房间@Delete,带参数

Java Android房间@Delete,带参数,java,android,sql,android-room,Java,Android,Sql,Android Room,我知道我不能在查询中使用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
(顺便说一句,这是一个遗憾),我将得到以下错误:

<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>
Error:Error:Observable查询返回类型(LiveData、Flowable等)只能与直接或间接(例如通过@Relation)访问至少一个表的SELECT查询一起使用。
但是我不能使用
@Delete(其中…xxx)

那么如何通过参数删除特定行呢?

实际上,您可以使用
@Query
执行删除操作

@Query("DELETE FROM users WHERE user_id = :userId")
abstract void deleteByUserId(long userId);
摘自:

更新或删除查询可以返回void或int。如果是int,则 值是受此查询影响的行数


房间的美在于,我们玩弄这些东西。根据要求,您可以使用 对于kotlin:

@Delete
fun delete(model: LanguageModel)
对于Java:

@Delete
void delete(LanguageModel model)

它将删除数据库中存储的具有相同值的确切对象。LanguageModel是我的模型类,它工作得很好。

您可以使用下面的方法按ID删除

@Query("DELETE FROM yourDB WHERE id = :id")
void deleteById(int id);
用于删除所有行

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

这是有效的,我一直在使用类似的东西,删除所有是这样写的。为了便于参考,请检查此:()@Delete由于某些原因对我不起作用。但这是有效的@Rakesh您的实体中可能有一个自动生成的主id,这意味着您只能删除正在使用的某些参数,如此处的“userId”。两个问题,因为我有一个自动生成的主id dos,这意味着即使对于我的更新方法,我也必须使用id,以及
删除
之间的区别是什么(正常)使用
id
查询执行
delete
?只是一个小观察:只提到了
@delete
注释方法的主键匹配。如果模型中没有主键定义,会发生什么还不清楚。如果要“删除数据库中存储的具有相同值的确切对象”,这将是无用的,因为对象在数据库中会发生变化,以后删除它们不需要我知道它们的确切数据;我只需要知道主键。@dbm中的实体至少需要一个主键roomdb@AndroidLearner这实际上是一个正确的观点。为未来访问者提供文档的快捷方式: