2

我正在执行以下操作以将信息插入数据库:

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 entry WHERE ent_seq = 1157170,如下所示:

id  |   word_fk                                         |   tag_id
52      SELECT id FROM entry WHERE ent_seq = 1157170        4

我打算将word_fk设置为从子查询返回的任何内容,但似乎insert()在将信息插入数据库时​​不执行子查询。我猜这与 SQL 输入清理有关?无论如何,如何使这个 insert() 查询工作?

4

1 回答 1

1

我打算将 word_fk 设置为从子查询返回的任何内容,但似乎 insert() 在将信息插入数据库时​​不执行子查询。我猜这与 SQL 输入清理有关?

对象是一些列和值之间的ContentValues简单映射,因此您不能真正使用它进​​行子查询,数据按原样使用。

但是,似乎您可以控制,ContentProvider所以我不明白为什么您不能简单地从键中ContentValues传入的insert()方法中提取子查询,word_fk然后直接使用它来获取您想要的内容。另一种方法是要求Uri传递给insert()提供者的方法必须包含一个额外的标识符(ent_seq你的例子中的参数)如果word_fk存在于ContentValues使用中。

于 2013-11-06T18:21:51.313 回答