"SELECT last_insert_rowid()" всегда возвращает "0",
У меня проблема с "last_insert_rowid()".
В моем классе DB-Helper я делаю следующее:
public int getLastID() {
final String MY_QUERY = "SELECT last_insert_rowid() FROM "+ DATABASE_TABLE5;
Cursor cur = mDb.rawQuery(MY_QUERY, null);
cur.moveToFirst();
int ID = cur.getInt(0);
cur.close();
return ID;
}
Но когда я это называю в своих намерениях:
int ID = mDbHelper.getLastID();
Toast.makeText(this, "LastID: " + ID, Toast.LENGTH_SHORT).show();
Я получаю всегда "0" назад. Этого не может быть, потому что у меня много записей в моей БД, и значение автоинкремента должно быть намного выше.
Что я делаю неправильно?
Ответы
Ответ 1
ОК, это был правильный намек Джона; -)
Запрос должен выглядеть так:
public int getHighestID() {
final String MY_QUERY = "SELECT MAX(_id) FROM " + DATABASE_TABLE5;
Cursor cur = mDb.rawQuery(MY_QUERY, null);
cur.moveToFirst();
int ID = cur.getInt(0);
cur.close();
return ID;
}
Ответ 2
Вам не нужно указывать имя таблицы с помощью last_insert_rowid()
, он автоматически выбирает последний вставленный идентификатор из сеанса. поэтому вы можете просто просто использовать эту функцию.
public int getHighestID() {
final String MY_QUERY = "SELECT last_insert_rowid()";
Cursor cur = mDb.rawQuery(MY_QUERY, null);
cur.moveToFirst();
int ID = cur.getInt(0);
cur.close();
return ID;
}