在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);
你可以在这个链接中找到更多的细节