问题描述
@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
中找到更详细的信息