Подтвердить что ты не робот

SQLiteQueryBuilder.query() и SQLiteDatabase.query()

Какая разница между этими двумя подходами? Для меня кажется, что единственным преимуществом SQLiteDatabase является его способность работать с различными базами данных. Я прав?

4b9b3361

Ответ 1

Основной метод SQLiteDatabase#rawQuery(). Оба SQLiteDatabase#query() и SQLiteQueryBuilder являются просто помощниками для создания SQL.

SQLiteDatabase#query() может составлять только простые запросы из одной таблицы. SQLiteQueryBuilder может создавать объединения, объединения и т.д. Поскольку SQLiteQueryBuilder является дополнительным объектом, вы бы его только построили, если вам нужна его мощность.

Лично я считаю, что любой нетривиальный SQL легче читать как SQL, чем как части, составленные с помощью такого помощника, поэтому я бы использовал rawQuery over SQLiteQueryBuilder, но это вопрос вкуса и того, насколько хорошо вы знать SQL. SQLiteQueryBuilder также может быть полезен, если у вас есть общие подзапросы, которые вы хотите скомпоновать по-разному.

На самом деле я бы предпочел (я использую sqlite, в основном, используя его API C), чтобы использовать подготовленные операторы, потому что компиляция SQL медленна по сравнению с исполнением, но я не вижу эту опцию в интерфейсе Java.

Ответ 2

SQLiteQueryBuilder полезен, если вы хотите делать соединения на нескольких таблицах. Для этого есть несколько удобных методов, если вы посмотрите исходный код на GrepCode: SQLiteQueryBuilder

В противном случае я не могу думать о твердой причине использовать SQLiteQueryBuilder для других подходов для запроса базы данных.