2012-01-09 3 views
4

Я хочу вернуть курсор только с отдельными значениями столбца. Колонка «групп», имеет больше деталей, но только с 2 значениями: 1,2,1,1,1,2,2,2,1Как получить курсор только с отдельными значениями?

String[] FROM = {Groups,_ID}; 

public Cursor getGroups(){ 
//...... 
return db.query(TABLE_NAME,FROM,null,null,null,null,null); 
} 

будет возвращать курсор, содержащий {1,2,1 , 1,1,2,2,2,1}}, но я хотел бы просто указать {1,2}.

ответ

8

Вы можете иметь SQL-запрос, как это,

public Cursor usingDistinct(String column_name) { 
     return db.rawQuery("select DISTINCT "+column_name+" from "+TBL_NAME, null); 
    } 
+2

+1 да согласен с реализовать запрос с Distinct –

+0

ошибка была потому, что вы сделали называть 'cursor.moveToFirst();' 'после курсора курсора = getGroups(); ' –

+0

Теперь я хочу извлечь значения из cursor.I попытался: \t \t String gr1 = cursor.getString (0); \t \t String gr2 = cursor.getString (1); 'но я получаю ошибку:' CursorIndexOutOfBoundsException: запрошенный индекс -1, с размером 2'. Затем я изменил его на: «Курсор курсор = db.rawQuery (« выберите DISTINCT »+ имя_столбца +« от »+ TABLE_NAME, null); \t \t \t \t если (курсор! = NULL) { \t \t \t cursor.moveToFirst(); \t \t} \t \t \t \t возврата курсор; 'и теперь, я могу получить доступ только первое значение, GetString (0). Когда я пытаюсь getString (1), я получаю NULL. Любая идея, как я могу извлечь оба значения из курсора? Спасибо за предоставленное решение. – AlexAndro

5

вы можете использовать отличный аргумент, делая запрос, как это:

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 

Следуйте этому doc для более clearity.

+0

Именно то, что я искал :) – User3

0

Вы можете использовать ниже пример запроса, как вы должны дать имя столбца для отчетливой

Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN_NAME_1 ,COLUMN_NAME_2, COLUMN_NAME_3 }, null, null, COLUMN_NAME_2, null, null, null); 

COLUMN_NAME_2 - имя столбца для различны.

забудьте добавить GROUP BY имена столбцов