如何通过 rawQuery 连接 ContentProvider 表?

How to join ContentProvider tables through rawQuery?

我想 sql 通过 rawQuery 加入。

例如uri如下:

Uri mmsPartUri = Uri.parse("content://mms/part"); 
Uri mmsInboxUri = Uri.parse("content://mms/inbox");


SQLiteDatabase db = //how to get it?

我想查询看起来类似于:

Cursor cursor = db.rawQuery("SELECT mms.part.mid, mms.part.text, mms.inbox.m_id, mms.inbox.date FROM mms.part JOIN mms.inbox
             ON mms.part.mid = mms.inbox.m_id", null);

可能吗?那怎么办?如果没有,是否还有其他连接表的选项,或者我是否必须使用两个 Cursors 和 CursorJoiner 来获得类似的结果?

如果无法跨不同的内容提供商加入,我很好奇我是否可以像这样执行任何 rawQueris:

Uri mmsPartUri = Uri.parse("content://mms/part");
SQLiteDatabase db = //how to get it?
Cursor cursor = db.rawQuery("SELECT mms.part.mid, mms.part.text,  FROM mms.part", null);

我看到了this and this

How to join ContentProvider tables through rawQuery?

没有 rawQuery() 可供 ContentProvider 的客户使用。

您无权访问 SQLiteDatabase,部分原因是不要求 SQLite 数据库。 ContentProvider 是一个门面。正如 Web 服务可以由任意数量的数据库技术支持一样,ContentProvider.

也可以。

Is it possible?

没有

do I have to use two Cursors and CursorJoiner to get similar result?

CursorJoiner是否能满足您的需求,我不好说。但是,您必须在您的应用程序的客户端进行连接。这类似于 Web 服务,其中 Web 服务尚未支持的任何连接都需要在客户端手动组装。