2012-07-14 87 views
31

插入到数据库的新记录的ID当你插入一个新的项目进入这样获得从返回的Uri

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

数据库有没有办法从返回的URI获得ID所以我不必运行查询来获取id,因为它已经在返回的uri中了?

回答

63

ContentUris.parseId()将上一个路径段转换为长整型。

+5

ContentUris.parseId()是“官方”如何检索记录ID谷歌的回答,请参阅结束[插入数据(http://developer.android.com/guide/topics/providers/ content-provider-basics.html#Inserting)部分。您还可以使用uri.getLastPathSegment()来获取字符串值,但是您需要使用Long.valueOf(stringId)而不是Integer.valueOf(stringId),因为数据库ID具有较长的值。 – Y2i 2012-07-15 00:13:56

11
long id = Long.valueOf(uri.getLastPathSegment()); 
+0

does uri.getPathSegments()。get(1)也给出相同的 – 2015-04-07 09:56:28

+0

id是'long' – weston 2015-09-20 19:20:48

0

使用ContentUris.parseId(URI) 这条语句将在最后一个路径段转换为long。在here

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

以上

阅读文档是正确的。但是我所做的是,我通过了uri,比如Events.CONTENT_URI.getLastPathSegment(),它没有给出id。因为我们必须像下面那样传递由insert()返回的URI。可能对像我这样的人有帮助!

Uri uri = getContentResolver().insert(Events.CONTENT_URI, values); 
long rowId = Long.valueOf(uri.getLastPathSegment());