Я пытаюсь вернуть имена отдельных значений в столбце «категория» базы данных SQLite. Кажется, что курсор не возвращает никаких результатов.
Я создаю приложение для Android, используя уже существующую базу данных видов птиц. Цель состоит в том, чтобы позволить пользователю исследовать базу данных через приложение. Проблема в том, что я пытаюсь вернуть различные категории видов птиц, которые существуют в базе данных. Похоже, что база данных открывается успешно - исключение SQLite не создается, но после использования запроса метод .moveToNext не возвращает никаких данных.
public ArrayList<String> getCategory(String[] name){
String TABLE_BIRDS = "main";
String[] COLUMN = name;
ArrayList<String>categories = new ArrayList<>();
if (name[0]!=null)
{
Log.d(LOG_TAG, name[0]);
} else {
Log.d(LOG_TAG, "name[0] has not been passed");
}
x = db.query(true, TABLE_BIRDS, new String[] { COLUMN[0] } , null, null, COLUMN[0], null, null, null );
if (x.moveToNext()) {
Log.i(LOG_TAG, x.getString(x.getColumnIndex("category")));
}
else {
Log.i(LOG_TAG, "The cursor is not returning any data");
}
//Simple cursor loop
if (x.moveToNext()){
String category = new String();
category = x.getString(x.getColumnIndex(category));
categories.add(category);
Log.i("cursor loop", category);
}
return categories;
В приведенном выше коде сообщения журнала показывают, что: getCategory получает ожидаемую строку «категория» перед запросом, но сразу после запроса цикл if / else сообщает, что «Курсор не возвращает никаких данных ».
Я ожидал, что запрос вернет шесть строк, цикл курсора добавит их в категории ArrayList, и этот ArrayList будет возвращен.
Пожалуйста, любая помощь будет оценена.