16

我对“last_insert_rowid()”有疑问。

在我的 DB-Helper-Class 中,我正在执行以下操作:

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”回来。那不可能,因为我的数据库中有很多条目,并且自动增量值应该更高。

我做错了什么?

4

2 回答 2

22

好的,这是正确的提示约翰 ;-)

查询应如下所示:

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;
}   
于 2012-07-02T23:11:23.410 回答
13

您不需要输入表名,last_insert_rowid()它会自动从会话中选择最后插入的 id。所以你也可以简单地使用这个功能。

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;
}
于 2014-08-26T12:09:07.023 回答