Possible Duplicate:
Get generated id after insert
我想使用此代码在我的 android 应用程序中获取最后插入的行 ID:
String query = "SELECT * from SQLITE_SEQUENCE";
int createdUserId = Integer.parseInt(dbHelper.executeSQLQuery(query).toString());
但问题是它抛出了一个无法将 dbHelper.executeSQLQuery(query).toString()
转换为整数的异常。我不太擅长 sqlite,但我认为这应该返回插入的最后一行 id...这肯定会是 int(至少我是这样认为的)。因此,如果这不是正确的方法,有人可以指导我如何获取 Android 应用程序中的最后一行 ID。
谢谢!!!
您的 SQL statrment 将返回所有行 ID,而不仅仅是最新的。尝试这样的事情......
SELECT ROWID from SQL_LITE_SEQUENCE order by ROWID DESC limit 1
另请注意,我相信从 SQL_LITE_SEQUENCE 中选择将从任何表中获取最新 ID,您还可以通过在任何表上选择 ROWID 并仅获取该表的 ID 来访问 SQL_LITE_SEQUENCE。浏览器
SELECT ROWID from MYTABLE order by ROWID DESC limit 1
感谢 MisterSquonk 在评论中指出下一步,将其添加到此处以方便以后引用...
然后查询语句将返回一个包含结果的 Cursor 对象,因此要访问整数值,您可以这样做(我将用更常用的方法代替您的辅助方法,只是为了其他目的)
String query = "SELECT ROWID from MYTABLE order by ROWID DESC limit 1";
Cursor c = db.rawQuery(query);
if (c != null && c.moveToFirst()) {
lastId = c.getLong(0); //The 0 is the column index, we only have 1 column, so the index is 0
}
(请注意,虽然 SQL Lite 文档调用了 ROWID 和 Integer,但它是一个 64 位整数,因此在 Java 中它应该被检索为 long。)