2014-02-05 55 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