Android Sqlite 获取最后插入的行 id

标签 android sqlite

<分区>

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。)

关于Android Sqlite 获取最后插入的行 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575166/

相关文章:

android - 回收者 View 中的 DiffUtils 与稳定 Id

java - 如何将数据库中的图片加载到ListView中?

python - 获取“cp950”编解码器的Unicode解码错误,无法解码位置2516中的字节0x80:非法的多字节序列

android - Android 应用程序的推送通知

c# - MvvmCross Android转换器导致光标跳转

android - 从联系人列表中选择联系人并为该联系人选择特定的电子邮件

android - 使用游标在android中进行SQlite查询

c++ - 使用 libcurl 函数传输 Sqlite DB 文件但无法立即打开 db 文件以将数据发送到数据库

c# - UWP - SQLite - 尝试加载格式不正确的程序

Android Room - 无法按日期排序