原始查询不工作的android

时间:2015-06-14 22:28:10

标签: android mysql sqlite

我将数据插入表中,然后获取插入项的id但我的原始查询返回: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);

1 个答案:

答案 0 :(得分:0)

SQLite查询方法返回位于第一个条目之前的游标对象。在尝试从光标读取之前,需要调用moveToFirst()或moveToNext(),例如:

cursor.moveToFirst();

该方法还返回一个布尔值,指示它是否成功。例如,如果结果集为空,则返回false,并且您将知道不尝试再读取值。在您的特定情况下,查询的性质应始终返回单行,因此可以说这种测试不是必需的。因此,上面的单行代码就足够了。