Android Studio Room 和 DAO:使用 'field=condition' 参数进行查询
Android Studio Room and DAO: Making a query with where 'field=condition' argument
在AndroidStudio 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");
什么根本不起作用。
有什么方法可以克服这个限制?另外,是否可以将 table 名称(本例中的 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
中找到更好的详细信息
在AndroidStudio 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");
什么根本不起作用。 有什么方法可以克服这个限制?另外,是否可以将 table 名称(本例中的 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
中找到更好的详细信息