使用带有ormlite的原始sql获取游标

时间:2012-01-01 18:41:13

标签: android ormlite

我想将SimpleCursorAdapter与Spinner一起使用。

我找到了如何返回光标。

QueryBuilder<ChoixPointVerification, Integer> qb = choixPointVerificationDao.queryBuilder();
qb.where().eq(FIELD, id);
PreparedQuery<ChoixPointVerification> preparedQuery = qb.prepare();
AndroidCompiledStatement compiledStatement =
                (AndroidCompiledStatement)preparedQuery.compile(db, StatementType.SELECT);

Cursor cursor = compiledStatement.getCursor();
return cursor;

但是Spinner需要一个_id字段,我只有一个带有id字段的对象。我宁愿避免重命名这个领域。

我该如何解决这个案子?我真的需要将id与所有微调器字段相关联。

我想我可以从rawsql发出光标但是我找不到如何使用ormlite。似乎可以使用原始sql创建PreparedQuery。

我还读到,如果我有一个AndroidDatabase对象,我可以发出一个Cursor对象,但是我们如何用ormlite创建一个AndroidDatabase呢?

我真的很开心所有的解决方案

此致

2 个答案:

答案 0 :(得分:8)

您可以使用CursorORMLite获取基础QueryBuilder对象,而无需诉诸原始查询。看看这个答案:

  

Android Cursor with ORMLite to use in CursorAdapter

您可以执行以下代码:

// build your query
QueryBuilder<Foo, String> qb = fooDao.queryBuilder();
qb.where()...;
// when you are done, prepare your query and build an iterator
CloseableIterator<Foo> iterator = dao.iterator(qb.prepare());
try {
   // get the raw results which can be cast under Android
   AndroidDatabaseResults results =
       (AndroidDatabaseResults)iterator.getRawResults();
   Cursor cursor = results.getRawCursor();
   ...
} finally {
   iterator.closeQuietly();
}

答案 1 :(得分:4)

我刚刚找到了一个效率高,简单且符合ormlite的解决方案。

我必须使用AndroidDatabase获得getHelper().getReadableDatabase()

然后使用

Cursor cursor = db.query("choixpointverification",
    new String[] { "id", "id as _id", "nom" },
    "masque = 0 and idPointVerification = " + idPointVerification.toString(),
    null, null, null, "tri");