Подтвердить что ты не робот

"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" назад. Этого не может быть, потому что у меня много записей в моей БД, и значение автоинкремента должно быть намного выше.

Что я делаю неправильно?

4b9b3361

Ответ 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;
}