【问题标题】:Android Studio Room and DAO: Making a query with where 'field=condition' argumentAndroid Studio Room 和 DAO:使用 where 'field=condition' 参数进行查询
【发布时间】:2021-02-18 11:04:39
【问题描述】:

在 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)作为参数传递?提前致谢。

【问题讨论】:

    标签: android android-room dao


    【解决方案1】:

    你应该像这样使用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找到更多详细信息

    【讨论】:

    • 谢谢!希望有一天 DAO 能以某种方式整合这种能力,让所有查询代码都保留在 DAO 本身中。
    • @sgm 是的,我也希望这样,这样更漂亮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2019-02-01
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多