2015-06-14 2 views
0

Я вставляя данных в таблицу, а затем получить идентификатор вставленного элемента, но мое сырье запроса возвращается: android.database.CursorIndexOutOfBoundsException: Индекс -1 просил, с размером 1сырье запроса не работает андроид

SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(COL_FIRST_NAME, athlete.getFirstName()); 
    values.put(COL_LAST_NAME, athlete.getLastName()); 
    values.put(COL_AGE, athlete.getAge()); 
    values.put(COL_GRADE, athlete.getGrade()); 

    db.insert(TABLE_ATHLETES, null, values); 

    Cursor cursor = db.rawQuery("SELECT MAX(" + COL_ATHLETE_ID + ") AS " + COL_ATHLETE_ID + 
    " FROM " + TABLE_ATHLETES, null); 
    int id = cursor.getInt(cursor.getColumnIndex(COL_ATHLETE_ID)); 
    athlete.setAthleteID(id); 
    Log.e("", "ID: " + id); 

ответ

0

Методы запросов SQLite возвращают объект курсора, который помещается перед первой записью. Вам нужно позвонить moveToFirst() или moveToNext(), прежде чем вы попытаетесь прочитать от курсора, например .:

cursor.moveToFirst(); 

Этот метод также возвращает логическое значение, указывающее, был ли он успешным. Например, если ваш набор результатов был пуст, он вернет false, и вы не знаете, чтобы не попытаться затем прочитать значение. В вашем конкретном случае характер вашего запроса таков, что он всегда должен возвращать одну строку, поэтому такой тест, возможно, не требуется. Следовательно, одной строки кода выше должно быть достаточно.

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

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