2015-08-14 8 views
0

Я под стеной. У меня очень простой метод:sqlite не возвращает результатов

public List<com.fixus.portals.model.Foothold> findAll() { 
    List<com.fixus.portals.model.Foothold> result = new ArrayList<com.fixus.portals.model.Foothold>(); 
    Cursor cursor = this.db.query(MainHelper.TABLE_FOOTHOLD, FOOTHOLD_FIELDS, null, null, null, null, null); 

    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     com.fixus.portals.model.Foothold foothold = this.mapToObject(cursor); 
     result.add(foothold); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 

    return result; 

} 

Он должен возвращать каждую запись из таблицы, но возвращает 0 (ноль). Я не знаю почему. Я отлаживал весь процесс, запрос выглядит нормально. Что смешно, когда я копирую вызванный запрос и запускаю его вручную на БД, я получаю результаты. Но когда я делаю это с Android-уровня, я ничего не возвращаю. Что я делаю не так ?

+2

Для отладки db-файлов используйте 'DatabaseUtils' и (например) его статический метод' dumpCursor() ', вопрос в том, почему вы хотите перебирать курсор? – pskink

+0

@pskink beucase Хочу коллекцию моих объектов. Но это не проблема, потому что курсор не содержит никаких результатов. – Fixus

+0

Вы уверены, что вызываете 'DatabaseUtils # dumpCursor'? – pskink

ответ

1

Используйте этот код шаблона для курсора:

public List<com.fixus.portals.model.Foothold> findAll() { 
    List<com.fixus.portals.model.Foothold> result = new ArrayList<com.fixus.portals.model.Foothold>(); 
    Cursor cursor = this.db.query(MainHelper.TABLE_FOOTHOLD, FOOTHOLD_FIELDS, null, null, null, null, null); 
    com.fixus.portals.model.Foothold foothold = this.mapToObject(cursor); 

    if(cursor.moveToFirst()){ 
     do{ 
     result.add(foothold); 
     }while(cursor.moveToNext()); 

    }else{ 
     //Your code for no data 
    } 
    cursor.close(); 

    return result; 

} 

И убедитесь, что ваша таблица не пуста.

+0

'while (cursor.moveToNext()) {...' шаблон наиболее часто используется, grep - код AOSP, и вы увидите – pskink

+0

@ Santiago, почему этот шаблон лучше? – Fixus

+0

@Fixus его не лучше, используйте simple 'while (cursor.moveToNext()) {...' – pskink

Смежные вопросы