2013-05-03 95 views
0

我想知道我们是否可以直接使用数据库(contacts.db,mmssms.db)而不是内容提供者?内容提供者或直接数据库?

我有理由这样问。在我最近的项目中,我应该开发一个联系人应用程序。我使用内容提供商进行联系人管理。正如我通过内容提供者了解到的,我一次只能通过URI查询表,但没有办法(至少我没有找到)加入两个表,然后查询解决。

我读过,数据库只对最初创建它们的应用程序可见,所以我的应用程序能够访问这些数据库吗?

我只是我自己手机的爱好开发者。我无意制作直接使用数据库的应用程序。我可以从设备拉数据库,通过sqlite分析它们。这不是说我对付内容提供商,或者他们不适合我现在需要写的东西,只是它可以完成或不完成?

有没有意见?

回答

1

内容提供者给你的不仅仅是数据库访问。能够使用Loaders自动重新加载数据(并更新您的用户界面),当底层数据发生变化时可以极大地简化您的应用程序。

内容提供者的目标更多的是创建一个访问数据的单一控制层。没有任何东西阻止您创建将多个表连接在一起的自定义URI,并返回最终的联合结果。

+0

到目前为止确信。 在没有简单的联系人内容提供者的情况下管理复杂的联系人数据库本来就是一团糟。 – Paras 2013-05-03 19:01:05

+0

如何创建自定义URI来连接多个表并返回数据? – Paras 2013-05-03 19:02:01

+0

@GauravTiwari - 如果你正在编写你自己的内容提供者,你可以提供任何你想要查询的URI。我的建议是为你需要的任何连接创建一个单独的URI(也就是说,你有一个/任务的URI和一个/组的URI--使一个/任务组的URI结合来自两者的信息)。 如果您使用的是SQLiteQueryBuilder,那么您可以使用setTables来完成您的加入(http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables(java.lang.String)有一个例如) – ianhanniballake 2013-05-03 19:30:59