Android и SQLite - получить максимальный идентификатор таблицы - PullRequest
5 голосов
/ 29 ноября 2010

Я пытаюсь создать метод для получения максимального идентификатора конкретной таблицы.

Это код, который не работает:

private long getMaxId()
{
    String query = "SELECT MAX(id) AS max_id FROM mytable";
    Cursor cursor = db.rawQuery(query, new String[] {"max_id"});

    int id = 0;     
    if (cursor.moveToFirst())
    {
        do
        {           
            id = cursor.getInt(0);                  
        } while(cursor.moveToNext());           
    }
    return id;
}

Исключение:

E/AndroidRuntime(24624): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x200408

Полагаю, проблема в этой строке:

            id = cursor.getInt(0); 

У кого-нибудь есть идеи, как это исправить?

Спасибо.

1 Ответ

8 голосов
/ 29 ноября 2010

Попробуйте заменить:

Cursor cursor = db.rawQuery(query, new String[] {"max_id"});

с

Cursor cursor = db.rawQuery(query, null);

Из описания rawQuery , для второго аргумента:

Вы можете включить? S в пункт where в запрос, который будет заменен на значения из selectionArgs. значения будут связаны как строки.

Поскольку в вашем SQL-запросе нет заполнителей, возможно, это является источником проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...