2014-02-05 27 views
3

我只需要使用GreenDao返回一列。这是SQL查询:GreenDao选择单个列?

SELECT NAME FROM PERSON 

我该如何使用GreenDao?

+0

您是否设法完成此任务?如果是,请分享您的解决方案吗? – Arefin

回答

0

如果你想执行原始查询(DaoSession.getDatabase),那么greenDao确实提供了对底层数据库的访问 - 在这种情况下你可能会感觉比greenDao更有效 - 这将涉及到获取所有人并迭代在结果中提取名称(用personDao.loadAll()轻松完成)。使用ORM库的想法是使用Person对象,并访问它的name属性。例如person.getName()。

+0

这就是为什么我现在使用一个简单的fromCursor方法而不是greenDao。这允许我指定我感兴趣的投影。 –

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