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);

你可以在这个链接中找到更多的细节

最新更新