Возвращает список целых чисел с SQLiteDatabase.rawQuery - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь написать функцию, которая возвращает список целых чисел, используя SQLiteDatabase.rawQuery. Вот как я это себе представляю, но не работает ..

public List<Integer> queryInt(String sql, String[] whereArgs){
    //fetch string array
    List<Integer> r = new ArrayList<Integer> ();
    SQLiteDatabase db = getReadableDatabase();
    Cursor c = db.rawQuery(
            sql,
            whereArgs
    );
    return c.toInt(); //something that does this
}

Если у кого-то есть подсказка, спасибо за помощь!

1 Ответ

0 голосов
/ 04 мая 2018

Вам нужно переместиться в пределах Курсора, прежде чем вы сможете получить доступ к любым данным (первоначально Курсор будет расположен перед первой строкой (позиция -1)).

Таким образом, ваш queryInt метод может быть: -

public List<Integer> queryInt(String sql, String[] whereArgs){
    //fetch string array
    List<Integer> r = new ArrayList<>();
    SQLiteDatabase db = getReadableDatabase();
    Cursor c = db.rawQuery(
            sql,
            whereArgs
    );
    // Loop through the Cursor
    while(c.moveToNext()) {
        r.add(c.getInt(0)); //<<<< see note
    }
    c.close(); //<<<< Should always close a Cursor when done with it.
    return r;
}
  • Примечание 0 предполагает, что данные должны быть извлечены из первого столбца. Однако рекомендуется не жестко кодировать смещение столбца, а получать смещение столбца на основе имени столбца, поэтому рекомендуется r.add(c.getInt(c.getColumnIndex(your_column_name_as_a_string)));.
  • Если строк нет, приведенное выше вернет пустой список, поэтому вам может потребоваться проверить размер возвращаемого списка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...