Ты прав. Первый ответ (все еще ниже) работает только без AUTOINCREMENT для идентификатора. С AUTOINCREMENT значения сохраняются в отдельной таблице и используются для приращения. Вот пример поиска значения:
public void printAutoIncrements(){
String query = "SELECT * FROM SQLITE_SEQUENCE";
Cursor cursor = mDb.rawQuery(query, null);
if (cursor.moveToFirst()){
do{
System.out.println("tableName: " +cursor.getString(cursor.getColumnIndex("name")));
System.out.println("autoInc: " + cursor.getString(cursor.getColumnIndex("seq")));
}while (cursor.moveToNext());
}
cursor.close();
}
См .: http://www.sqlite.org/autoinc.html
Первый ответ:
Вы можете запросить максимум столбца _id, например:
String query = "SELECT MAX(id) AS max_id FROM mytable";
Cursor cursor = db.rawQuery(query, null);
int id = 0;
if (cursor.moveToFirst())
{
do
{
id = cursor.getInt(0);
} while(cursor.moveToNext());
}
return id;
Это работает для идентификаторов строк, которые не были указаны как «INTEGER PRIMARY KEY AUTOINCREMENT» (все таблицы имеют столбец идентификатора строки).