android - 如何从 insert() 获取 ID

标签 android sqlite

我在从添加的行中检索 ID 时遇到了一点问题。 我的 ContentProvider 中的 insertWithConflict 返回新添加行的 ID,但我不知道如何将它从我的 ContentProvider 获取到我的 IntentService 负责触发插入。

代码

插入IntentService

Uri uri = Uri.parse(MicroDatabaseProvider.CONTENT_URI + "/" +  MicroDatabaseProvider.ORGANIZER_SEARCH_IN);
getContentResolver().insert(uri, cv);

插入ContetnProvider

long idLong = sqlDB.insertWithOnConflict(DbHelperMicro.ORGANIZER_SEARCH_TABLE,
                    null,
                    values,
                    SQLiteDatabase.CONFLICT_IGNORE);
            getContext().getContentResolver().notifyChange(Uri.parse(CONTENT_URI + "/" + ORGANIZER_SEARCH_QUE), null);

最佳答案

ContentProvider 中的 insert 函数应该返回一个 Uri 值,如下所示:

public Uri insert(Uri uri, ContentValues values) {
//...
return Uri.parse(base_uri+ "/" + id); //where base uri is the base uri from your table
}

如果就像我向您展示的那样,您可以从该 URI 中检索 ID。

在您的 IntentService 中使用以下代码

Uri result = getContentResolver().insert(uri, cv); 

long id = Long.parseLong(uri.getLastPathSegment());

关于android - 如何从 insert() 获取 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802393/

相关文章:

android - 从获取的坐标中获取位置名称

android - Apk 无法在 Android N 上安装,出现 INSTALL_FAILED_INVALID_APK 错误

java - Realm不保存属性,对象虽然复制到Realm但不被管理

android - 使用 BroadcastReceiver 和 AlarmManager 创建通知

sqlite - 如何将字符串数组插入sqlite3表的列

安卓蓝牙连接错误

sql - 如何在 SQLite 中的特定条件下进行 SQL 查询,将一个表的结果行与另一表的行组合起来

date - 如何在sqlite中将字符串日期转换为日期格式

c# - Dapper 不从基本类型字段中读取值

ios - 哪些 iOS 设备有 SQLite? future 几年的所有新设备都会支持 SQLite 吗?