2017-01-13 5 views
0

У меня есть код ниже, где я использую вложенные курсоры. Оба они не являются нулевыми, но я получаю ошибку "android.database.CursorIndexOutOfBoundsException: указатель 0 запрошен, с размером 0" на внутреннем курсоре.Курсор внутри другого курсора в sqlite db

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 db. Помощь Pls.

Спасибо!

ответ

0

rawQuery() не возвращается null.

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

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

  • Нет связанных вопросов^_^