Ответ 1
Основной метод SQLiteDatabase#rawQuery()
. Оба SQLiteDatabase#query()
и SQLiteQueryBuilder
являются просто помощниками для создания SQL.
SQLiteDatabase#query()
может составлять только простые запросы из одной таблицы. SQLiteQueryBuilder
может создавать объединения, объединения и т.д. Поскольку SQLiteQueryBuilder
является дополнительным объектом, вы бы его только построили, если вам нужна его мощность.
Лично я считаю, что любой нетривиальный SQL легче читать как SQL, чем как части, составленные с помощью такого помощника, поэтому я бы использовал rawQuery
over SQLiteQueryBuilder
, но это вопрос вкуса и того, насколько хорошо вы знать SQL. SQLiteQueryBuilder
также может быть полезен, если у вас есть общие подзапросы, которые вы хотите скомпоновать по-разному.
На самом деле я бы предпочел (я использую sqlite, в основном, используя его API C), чтобы использовать подготовленные операторы, потому что компиляция SQL медленна по сравнению с исполнением, но я не вижу эту опцию в интерфейсе Java.