我的任务是从Android设备上的所有联系人中搜索姓名,电话,电子邮件,公司和便笺。我之前从未与内容提供商合作过。我阅读了内容提供者文档,教程,看到了代码示例,但我仍然不太确定: android是否在不同的表中存储有关姓名,电话,电子邮件,公司和注释的信息?
所以我必须分别查询姓名,电话,电子邮件,公司和每个联系人的说明吗?每个联系人5个查询*联系人数=最有效的方式?或者我可以用更少的查询来替代?为什么不在同一个表中存储所有联系人和所有联系人字段,以便可以使用单个SELECT查询获取所有数据(在android内容提供程序框架中为模拟)?
所以我的主要问题是:每次联系我是否需要进行5次查询,还是有更有效的方式?
答案 0 :(得分:0)
android存储有关姓名,电话,电子邮件,公司和的信息 请注意不同的表格?
几乎。名称存储在Contacts.DISPLAY_NAME中。 电话和电子邮件位于数据表中,但要解释您需要使用的列名 ContactsContract.CommonDataKinds.Phone类。
更新:我提到的原始文章已被删除。 以下是相关链接:
如果您对幕后发生的事情感兴趣,谷歌实施了他们的联系人数据库(截至4.2),以便将电话,电子邮件全部存储在名为data的同一个表中。该表包含data1,data2 .... data15等列,只要该数据项的属性不超过15,就可以在该表中存储各种数据。 我的猜测是出于性能原因 - 在一次查询()调用中选择所有关于一个联系人的数据要快得多。 名字是另一个故事。它存储在两个表中,“raw_contacts”(列display_name)和“data”(列“data1”)