Курсор внутри другого курсора в базе данных sqlite

У меня есть ниже код, где я использую вложенные курсоры. Оба из них не null, но я получаю ошибку
«андроид.база данных.CursorIndexOutOfBoundsException: запрошенный индекс 0 с размером 0» на внутреннем курсоре.

Cursor cursor3 = null;

    Cursor cursor2 = db.getAllFriendsChat();  
    cursor2.moveToFirst();
    while (!cursor2.isAfterLast()) {
           String number = cursor2.getString(cursor2.getColumnIndexOrThrow(ChatModel.COLUMN_CHAT_SENT_TO));
           cursor3 = db.getName(number);
           String name   = cursor3.getString(cursor3.getColumnIndexOrThrow(db.KEY_NAME));
           db.insertList(name, number);
           cursor3.close();
           cursor2.moveToNext();
            }
            cursor2.close();

метод getName ():

public Cursor getName(String phone) {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor c = db.rawQuery("select * from " + TABLE_STUDENTS + " where phone_number = " + phone, null);
        if (c != null) {
            c.moveToFirst(); //***I see that this statement is executed.***
        }
        return c;
    }

Я не могу понять, где я делаю ошибку. Существует ли другой способ обработки вложенных курсоров в базе данных sqlite. Pls справка.

Спасибо!

1 ответ

  1. rawQuery() никогда не возвращается null.

    Чтобы проверить, является ли курсор пустым, необходимо проверитьmoveToFirst(), успешно ли выполняется вызов isAfterLast().