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

中找到更好的详细信息