我正在执行以下操作以将信息插入数据库:
ContentValues attachTags = new ContentValues();
attachTags.put("word_fk", "SELECT id FROM entry WHERE ent_seq = " + String.valueOf(line).substring(1));
attachTags.put("tag_id", gTagID);
// Insert the record
Uri insertUri = contentProvider.insert(Uri.parse(mContentProvider.CONTENT_URI + mContentProvider.PATH_SET_TAGS_ON_WORD), attachTags);
不幸的是, word_fk 字面上设置为 SELECT id FROM条目WHERE ent_seq = 1157170 ,如下所示:
id | word_fk | tag_id
52 SELECT id FROM entry WHERE ent_seq = 1157170 4
我打算将<strong> word_fk 设置为从子查询返回的任何内容,但似乎insert()
在将信息插入数据库时不执行子查询。我想这与SQL输入清理相关?在任何情况下,如何使这个insert()查询工作?
答案 0 :(得分:1)
我打算将word_fk设置为从...返回的任何内容 子查询,但似乎insert()不执行子查询 何时将信息插入数据库。我想这与它有关 SQL输入清理?
ContentValues
对象是某些列和值之间的简单映射,因此您无法真正使用它来进行子查询,数据按原样使用。
但是,您似乎控制了ContentProvider
所以我不明白为什么您不能简单地从ContentValues
方法中传递的insert()
中提取子查询word_fk
键并进一步直接使用它来获得您想要的内容。另一种方法是要求传递给提供者的Uri
方法的insert()
必须包含额外的标识符(示例中为ent_seq
参数),如果word_fk
是出现在ContentValues
中。