【问题标题】:Is there a way to get a Cursor from a GreenDao Query object?有没有办法从 GreenDao 查询对象中获取光标?
【发布时间】:2016-05-19 16:23:12
【问题描述】:

我正在尝试实现AlphabtIndexer,并且构造函数需要数据库中表的游标。

有没有办法从 GreenDao 中的查询对象中获取光标?

【问题讨论】:

标签: android android-cursor greendao


【解决方案1】:

假设你有 Query 对象 query 和 dao sesssion daoSession 你可以运行:

Cursor cursor = daoSession.getDatabase().rawQuery(query.getSql(), query.getParameters());

【讨论】:

  • 查询对象没有getSql()getParameters()
  • 对不起,这是我的错。这是our version 中的自定义代码。您可以使用相同的方式轻松添加它。
  • 有人知道为什么原始代码中的 getter 无法访问 sql 字段吗?
  • 新的 2.1 版本将有一个功能齐全的 QueryCursor 构建器。
【解决方案2】:

GreenDao 2.1,queryBuilder 提供了一个 buildCursor() 函数

session.getMyObjectDao().queryBuilder()
        .where(MyObjectDao.Properties.Locale.eq("en")))
        .buildCursor().forCurrentThread().query()

【讨论】:

    【解决方案3】:

    使用 GreenDao 2.1,您可以创建一个 QueryBuilder 对象,然后在该对象上调用 buildCursor().query() 以返回一个游标。

    DBUserDao userDao = daoSession.getDBUserDao();
    QueryBuilder<DBUser> queryBuilder = userDao.queryBuilder().where(DBUserDao.Properties.Phone_number.eq("XYZ"));
    Cursor cursor = queryBuilder.buildCursor().query();
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      相关资源
      最近更新 更多