从返回的Uri中获取插入到数据库中的新记录的ID。

35

当您像这样向数据库插入新项目时

Uri uri = getContentResolver().insert(Tournaments.CONTENT_URI, values); 

有没有办法从返回的URI中获取ID,这样我就不必运行查询来获取ID,因为它已经在返回的URI中了?

4个回答

70

9
ContentUris.parseId() 是检索记录 ID 的“官方”Google答案,在插入数据部分的末尾有详细介绍。您也可以使用uri.getLastPathSegment()获取字符串值,但是需要使用Long.valueOf(stringId)而不是Integer.valueOf(stringId),因为数据库ID具有long值。 - Y2i

12
long id = Long.valueOf(uri.getLastPathSegment());

uri.getPathSegments().get(1)是否也会给出相同的结果? - Rajnish Mishra

1

使用ContentUris.parseId(uri)语句将把最后一个路径段转换为长整型。

这里阅读文档。


0
long rowId = Long.valueOf(uri.getLastPathSegment());

以上是正确的。但是我所做的是,我传递了像Events.CONTENT_URI.getLastPathSegment()这样的URI,它并没有给出ID。因为我们必须传递由insert()返回的URI,如下所示。可能对像我这样的人有帮助!
Uri uri = getContentResolver().insert(Events.CONTENT_URI, values); 
long rowId = Long.valueOf(uri.getLastPathSegment());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接