Android и SQLite - получить максимальный идентификатор из таблицы - PullRequest
7 голосов
/ 15 августа 2011

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

Это мой метод.Это работает, но возвращаемое значение равно 0,

public int getLastId() {
    openDB();
    int id = 0;
    final String MY_QUERY = "SELECT MAX(_id) AS _id FROM organize";
    Cursor mCursor = mDb.rawQuery(MY_QUERY, null);  
    try {
          if (mCursor.getCount() > 0) {
            mCursor.moveToFirst();
            id = mCursor.getInt(mCursor.getColumnIndex(MY_QUERY));
          }
        } catch (Exception e) {
          System.out.println(e.getMessage());
        } finally {
            closeDB();
        }
return id;

}

Могу ли я решить эту проблему, большое спасибо

Ответы [ 4 ]

6 голосов
/ 15 августа 2011

Перепишите эту строку

id = mCursor.getInt(mCursor.getColumnIndex(MY_QUERY));

до

id = mCursor.getInt(mCursor.getColumnIndex("_id"));  

или лучше до

id = mCursor.getInt(0);//there's only 1 column in cursor since you only get MAX, not dataset

И посмотрите на LogCat, он расскажет вам о вашей проблеме.

2 голосов
/ 15 августа 2011
final String MY_QUERY = "SELECT MAX(_id) FROM organize";

попробуйте только это

1 голос
/ 12 декабря 2015

Попробуйте этот метод:

private int getMaxID(){
    int mx=-1;
    try{
        db = this.getReadableDatabase();

        SQLiteDatabase db=this.getReadableDatabase();
        Cursor cursor=db.rawQuery("SELECT max(ID) from tblIntents ",new String [] {});
        if (cursor != null)
            if(cursor.moveToFirst())
            {

                mx= cursor.getInt(0);

            }
        //  cursor.close();

        return mx;
    }
    catch(Exception e){

        return -1;
    }
}
1 голос
/ 15 августа 2011

Проверяли ли вы, что код внутри блока try работает идеально?
Может быть, код переходит в блок catch и id возвращает 0, которое вы инициализировали.

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