0

Я хочу сделать sql-соединение через rawQuery.Как присоединиться к таблицам ContentProvider через rawQuery?

Например Ури являются следующие:

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); 

Возможно ли это? Тогда как? Если нет, есть ли другой способ присоединиться к таблицам, или мне нужно использовать два курсора и 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 и this.

ответ

1

Как присоединиться к таблицам ContentProvider через rawQuery?

rawQuery() Доступно клиентам ContentProvider.

У вас нет доступа к SQLiteDatabase, частично потому что нет требования, чтобы был база данных SQLite. A ContentProvider - это фасад. Так же, как веб-сервис может быть подкреплен любым количеством технологий баз данных, так что может быть ContentProvider.

Возможно ли это?

No.

я должен использовать два курсоров и CursorJoiner, чтобы получить подобный результат?

Может ли CursorJoiner удовлетворить ваши потребности, я не могу сказать. Тем не менее, вам нужно будет сделать соединение на стороне клиента, в вашем приложении. Это похоже на веб-службу, где любые соединения, которые еще не поддерживаются веб-службой, должны быть вручную собраны на стороне клиента.

Смежные вопросы