GreenDao如何选择单个列?

5
我需要使用GreenDao只返回一列。这是SQL查询语句:
SELECT NAME FROM PERSON

我该如何使用GreenDao实现这个功能?

你成功完成了吗?如果是的话,能否分享一下你的解决方案? - Taslim A. Khan
2个回答

0
public static ArrayList<ArrayList<String>> rawQuery(final String query) {
        SQLiteDatabase db = DBHelper.getDaoSession().getDatabase();
        Cursor cursor = db.rawQuery(query, null);
        retList = new ArrayList<ArrayList<String>>();
        ArrayList<String> list = new ArrayList<String>();
        if (cursor.moveToFirst()) {
            do {
                list = new ArrayList<String>();
                for (int i = 0; i < cursor.getColumnCount(); i++) {
                    list.add(cursor.getString(i));
                }
                retList.add(list);
            } while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        }

        return retList;

    }

使用这个赞让我知道你想要更多的东西吗?


1
问题在于这种查询方式无法确保只有一个线程同时使用我的SQLiteDatabase。 - oli

0

嗯,如果你想执行原始查询(DaoSession.getDatabase),greenDao确实提供了访问底层数据库的方式——在这种情况下,你可能觉得这比使用greenDao替代方案更高效——后者需要获取所有Persons并迭代结果以提取名称(使用personDao.loadAll()轻松完成)。使用ORM库的想法是使用Person对象,并访问其上的名称属性。例如:person.getName()。


这就是为什么我现在使用一个简单的fromCursor方法而不是greenDao。这使我能够指定我感兴趣的投影。 - Eric Woodruff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接