CursorIndexOutOfBoundsException для cursor.getString (i) - PullRequest
0 голосов
/ 18 октября 2011

В моем коде есть метод, который проверяет содержимое базы данных.Ниже приведен код:

    if(rowId  >= 1){

        Cursor cursor = adapter.fetchAllQRurl();
        int length = cursor.getCount();

        for( int i=0; i<length ; i++){
           if(contents.equals(cursor.getString(i))){
          Toast.makeText(this, "The entry already exists.",Toast.LENGTH_LONG).show();
        }
    }

Но я всегда получаю ошибку ниже.Я не уверен, что пошло не так в "cursor.getString (i)". Я что-то пропустил в своем коде?

 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
    at android.database.AbstractWindowedCursor.getShort(AbstractWindowedCursor.java:69)

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Попробуйте этот способ получить значения из курсора. Вам нужно поместить курсор в начало, чтобы оно возвращало значения

Cursor cursor = adapter.fetchAllQRurl();
if (cursor.moveToFirst()) {
    do {
        String Test = mNotesCursor.getString("Your_Column_Name");
    } while (cursor.moveToNext());
}
1 голос
/ 18 октября 2011

Лучший способ извлечь данные из объекта Cursor:

if (cursor.moveToFirst()){
   do{
      String data = cursor.getString(i);
      // do what ever you want here
   }while(moveToNext());
}
cursor.close();
0 голосов
/ 18 октября 2011

В вашем коде есть несколько проблем:

  • Вам нужно перейти к первой строке, прежде чем пытаться получить доступ к столбцам, используя http://developer.android.com/reference/android/database/Cursor.html#moveToFirst()
  • cursor.getCount() returnколичество рядовОднако в вашем цикле вы используете cursor.getString(i), который используется для доступа к столбцу n: th.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...