Ответ 1
Ваш SQL файл будет возвращать все идентификаторы строк, а не только последние. Попробуйте что-то вроде этого...
SELECT ROWID from SQL_LITE_SEQUENCE order by ROWID DESC limit 1
Также обратите внимание, что я считаю, что выбор из SQL_LITE_SEQUENCE получит последний идентификатор из таблицы ANY, вы также можете получить доступ к SQL_LITE_SEQUENCE, выбрав ROWID в любой таблице и получив только идентификаторы для этой таблицы. IE
SELECT ROWID from MYTABLE order by ROWID DESC limit 1
И благодаря MisterSquonk для указания следующего шага в комментариях, добавив его здесь для удобства ссылок позже...
Затем оператор запроса возвращает объект Cursor, содержащий результаты, поэтому для доступа к целочисленному значению вы сделаете что-то вроде этого (я заменим более распространенные методы для вашего вспомогательного метода, просто ради других)
String query = "SELECT ROWID from MYTABLE order by ROWID DESC limit 1";
Cursor c = db.rawQuery(query);
if (c != null && c.moveToFirst()) {
lastId = c.getLong(0); //The 0 is the column index, we only have 1 column, so the index is 0
}
(Обратите внимание, что хотя документы SQL Lite вызывают ROWID и Integer, это 64-битное целое число, поэтому в Java оно должно быть получено как длинное.)