我将数据插入表中,然后获取插入项的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);
答案 0 :(得分:0)
SQLite查询方法返回位于第一个条目之前的游标对象。在尝试从光标读取之前,需要调用moveToFirst()或moveToNext(),例如:
cursor.moveToFirst();
该方法还返回一个布尔值,指示它是否成功。例如,如果结果集为空,则返回false,并且您将知道不尝试再读取值。在您的特定情况下,查询的性质应始终返回单行,因此可以说这种测试不是必需的。因此,上面的单行代码就足够了。