Android Studio Room 和 DAO:使用 where 'field=condition' 参数进行查询

问题描述

在Android Studio DAO界面中,这段代码

@Query("SELECT COUNT(*) FROM StrategyLinks WHERE Id_Property=:condition")
    long countStrategyLinks(String condition);

当我打电话时工作正常:

MyDao.countStrategyLinks("10");

但是,我真的想要一个更通用的形式,像这样:

@Query("SELECT COUNT(*) FROM StrategyLinks WHERE :condition")
    long countStrategyLinks(String condition);

当我打电话时:

MyDao.countStrategyLinks("Id_Property=10");

什么根本行不通。 有什么办法可以克服这个限制吗?另外,是否可以将表名(在本例中为 StrategyLinks)作为参数传递?提前致谢。

解决方法

你应该像这样使用 RawQuery

 @Dao
 interface RawDao {
   @RawQuery
   long countStrategyLinks(SupportSQLiteQuery query);
 }

 // Usage of RawDao
 SimpleSQLiteQuery query = new SimpleSQLiteQuery(
     "SELECT COUNT(*) FROM StrategyLinks WHERE ?",new Object[]{ condition});
 long result = rawDao.countStrategyLinks(query);
 

您可以在this link

中找到更详细的信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...