Android 原始查询不工作
我正在向表中插入数据,然后获取插入项的id,但我的原始查询返回:android.database.CursorIndexOutOfBoundsException:Index-1已请求,大小为1Android 原始查询不工作,android,mysql,sqlite,Android,Mysql,Sqlite,我正在向表中插入数据,然后获取插入项的id,但我的原始查询返回:android.database.CursorIndexOutOfBoundsException:Index-1已请求,大小为1 SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COL_FIRST_NAME, athlete.getFirstName());
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);
SQLite查询方法返回位于第一个条目之前的游标对象。在尝试读取光标之前,需要调用moveToFirst()或moveToNext(),例如:
cursor.moveToFirst();
该方法还返回一个布尔值,指示它是否成功。例如,如果结果集为空,它将返回false,并且您将知道不尝试读取值。在您的特定情况下,查询的性质是它应该始终返回一行,因此可以说不需要这样的测试。因此,上面的一行代码就足够了