34

有什么方法可以获取 Cursor 进行查询,我正在使用 ORMLite Dao 对象进行处理?

4

4 回答 4

65

ORMLite现在支持next()上的, previous(), moveRelative(offset), ... 方法。这应该允许您随意移动底层对象。CloseableIteratorCursor

它还支持以下 DAO Cursor 方法:


当您使用ORMLite构建自己的查询时,您将使用该QueryBuilder对象。 queryBuilder.prepare()返回PreparedQuery由 DAO 中的各种方法使用的 a。您可以调用dao.iterator(preparedQuery)which 将返回一个CloseableIteratorwhich 用于遍历结果。有一个iterator.getRawResults()访问DatabaseResults类。在 Android 下,可以将 this 强制转换为AndroidDatabaseResults具有getCursor()返回 Android 的方法的方法Cursor

类似于以下代码:

// 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();
}

这有点复杂,但您肯定必须在 vale 后面窥视才能找到这个被数据库抽象类隐藏的对象。

于 2011-08-23T12:41:41.307 回答
0

如果您的意思是getHelper()到达 dao 方法 create 等的方法,您只需从 the 继承OrmLiteBaseActivity<YourDBHelper>即可调用它。它看起来像这样:

public class YourClass extends OrmLiteBaseActivity<YourDBHelper> {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
     ...
     getHelper().getDao().queryForAll();
     ...
  }
}

如果你的意思是游标来处理数据库操作:我不认为你可以达到它!但我不明白你为什么需要它。ORMLite 几乎具有游标的所有功能。那你需要它做什么?

于 2011-08-23T11:15:19.810 回答
0

你有没有从这篇文章中尝试过格雷的一些建议?他解释了如何选择一个列作为另一个名称,例如,选择 id 作为_id。

于 2012-10-19T11:06:05.260 回答
0

如果您在 Activity 中并且不想弄乱 QueryBuilder,请尝试以下方法,这同样有效。

Cursor cursor = getHelper().getReadableDatabase().query(tableName, projection, selection, selectionArgs, groupBy, having, sortOrder)
于 2013-06-22T12:24:24.383 回答