我遇到“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”回来。这不可能,因为我的数据库中有很多条目,自动增量值应该高得多。
我做错了什么?
答案 0 :(得分:21)
好的,这是John的正确暗示; - )
查询应如下所示:
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;
}
答案 1 :(得分:11)
您不需要将表名与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;
}