Ошибка таблицы SQLite

Я работаю с SQLite в Android. У меня в таблице только 1 объект, то есть имя. Я хочу сделать Arraylist и использовать его в recyclerview. Но я получаю ошибку, указанную ниже. С ним я понял, что есть проблема с курсором, но теперь не знаю, что.

Ошибка

Failed to read row 0, column -1 from a CursorWindow which has 7 rows, 1 columns.

Код для

public List<FavNames> getFav(){
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    String[] sqlMasterSelect = {"name"};
    String sqlMasterTable = "FavNames";

    qb.setTables(sqlMasterTable);
    Cursor c = qb.query(db,sqlMasterSelect,
            null,null,null,null,null);

    final List<FavNames> masterResult = new ArrayList<>();

    if (c.moveToFirst()){

        do {
            masterResult.add(new FavNames(c
                    .getString(c.getColumnIndex("name"))));

        }while (c.moveToNext());
    }

    return masterResult;

}

RecyclerView

recyclerView = findViewById(R.id.favRecycler);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    fav = new Database(this).getFav();
    adapter = new FavAdapter(getBaseContext(), fav);
    recyclerView.setAdapter(adapter);
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убедитесь, что имя столбца - name
. Для такого простого запроса вам не нужен SQLiteQueryBuilder.

public List<FavNames> getFav(){
    SQLiteDatabase db = getReadableDatabase();

    String sqlMasterTable = "FavNames";
    String sql = "SELECT * FROM " + sqlMasterTable;

    Cursor c = db.rawQuery(sql, null);

    final List<FavNames> masterResult = new ArrayList<>();

    if (c.moveToFirst()){

        do {
            masterResult.add(new FavNames(c.getString(0).toString()));                    

        }while (c.moveToNext());
    }

    return masterResult;

}

Это простой rawQuery
Надеюсь, у меня нет опечаток.

По-прежнему та же ошибка - «java.lang.IllegalStateException: не удалось прочитать строку 0, столбец -1 из CursorWindow. Убедитесь, что курсор инициализирован правильно, прежде чем обращаться к данным из него».

DJM 25.07.2018 15:36

Вы уверены, что имя столбца - name?

user8959091 25.07.2018 15:37

Это решило ошибку, но теперь она не заполняет Recyclerview

DJM 25.07.2018 15:44

Это еще один вопрос, который вы должны опубликовать после отладки

user8959091 25.07.2018 15:45

В любом случае, спасибо.

DJM 25.07.2018 15:46

Другие вопросы по теме