【发布时间】:2012-04-30 21:06:22
【问题描述】:
我正在尝试创建一个包含已编写应用程序中的功能的库。旧应用程序使用复杂的 sqlite 数据库。我正在尝试重用旧数据库作为内容提供者的后端,但无法弄清楚我正在尝试做什么以及如何调整各种示例的“最佳实践”(this,this , 和其他人) 我发现了我的情况。
假设你有这个数据库结构
+------+-------------+-------------+-------------+
| Root | Folder | Item | Subitem |
+------+-------------+-------------+-------------+
| _id | _id | _id | _id |
| uuid | parent_uuid | parent_uuid | parent_uuid |
| | uuid | uuid | uuid |
| | name | name | name |
| | data | data | data |
+------+-------------+-------------+-------------+
Root->Folder->Item->Subitem
之前,我使用了一个 DbAdapter 类,在该类中我提供了函数调用,该函数调用采用 parent_uuid 等参数,处理函数内部的所有 sql 查询内容,然后返回带有结果的游标
示例函数存根:
- get_items_by_parent_uuid(folder_uuid)
- get_item_by_uuid(uuid)
- Subitem 也一样
复杂查询
- get_items_for_root(root_uuid)
- 返回带有项目 uuid、项目名称、项目数据、文件夹名称的光标
- get_items_with_subitem_count(folder_uuid)
- 返回带有项目 uuid、项目名称、项目数据、子项目计数的光标,其中 subitem.parent_uuid == item.uuid
我想不出用 1 ContentProvider 提供上述功能的最佳方式。
我不需要有人给我写大量代码(但如果你这样做我也可以),我只是希望有人帮助我了解如何修改上面链接的示例来做这些事情,因为我主要做理解这些示例,但不足以将它们转化为我当前的需求。
TL;DR; - 如何编写单个 ContentProvider 来处理多个表,不依赖 _id 作为唯一标识符,并处理可能具有内部选择的连接-选择/查询(如select count(*))
【问题讨论】:
标签: android android-contentprovider