如何通过rawQuery加入ContentProvider表?

时间:2016-01-16 16:18:13

标签: android sqlite join android-contentprovider android-cursor

我想通过rawQuery进行sql连接。

例如,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);

我看到thisthis

1 个答案:

答案 0 :(得分:1)

  

如何通过rawQuery加入ContentProvider表?

rawQuery()的客户无法使用ContentProvider

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

也可以
  

有可能吗?

没有

  

我是否必须使用两个Cursors和CursorJoiner来获得类似的结果?

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