我在我的提供者上应用了一批 ContentProviderOperations:
ContentProviderResult[] result = resolver.applyBatch(...)
一切都按预期工作,数据被插入到数据库中,但是如果我想提取 id(s),则应该是 id 的 uri 的最后一个元素始终为空。
这是因为我已将表的 _id 设置为自动递增(换句话说,如果我不自动递增 id 并用我的代码中的手动 uid 填充它,它会起作用吗)。
如果没有,谁能告诉我是什么导致了这种行为。
更新:这是创建表的字符串:
private static final String CREATE_TABLE_WORKFLOWSTATES =
"CREATE TABLE " + Tables.WORKFLOWSTATES + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ WorkflowStatesColumns.NAME + " TEXT NOT NULL,"
+ "UNIQUE ("+ WorkflowStatesColumns.NAME + ") ON CONFLICT IGNORE)";
如果我查看表格,我可以看到列 _ id和name,可见的插入数据表明自动增量工作正常。
更新 2:这就是我构建 ContentProviderOperation 的方式:
这是我的带有 ContentProviderOperations 的 ArrayList(CollectionUtils 是一个自定义类,用于实例化 Arraylist):
ArrayList<ContentProviderOperation> batch = CollectionUtils.newArrayList();
这是实际操作:
batch.add(ContentProviderOperation
.newInsert(InvoiceContract.addCallerIsSyncAdapterParameter(WorkflowStates.CONTENT_URI))
.withValue(WorkflowStates.NAME, task.getWFS()).build());