Чтобы облегчить отладку, можно ли распечатать выражение sql перед выполнением следующего запроса?
c = qb.query(
epgDB,
projection,
selection,
selectionArgs,
null,
null,
sortOrder);
Если вы уже использовали определенные методы SQLiteQueryBuilder, например. appendWhere(), вы можете сгенерировать базовый оператор SQL, просто позвонив buildQuery()
:
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
// call qb.appendWhere(), qb.appendColumns(), qb.setProjectionMap() etc.
String sql;
sql = qb.buildQuery(null, null, null, null, null, null, null); // pre API 11
sql = qb.buildQuery(null, null, null, null, null, null); // API 11 and later
Оба метода объединяют параметры, ранее установленные отдельными методами, со своими параметрами перед вызовом buildQueryString()
. Они не изменяют состояние объекта SQLiteQueryBuilder и поэтому безопасны для использования перед выполнением запроса.
Слово предостережения. Я узнал об этом из самого кода, а javadoc не упоминает об использовании этого метода для получения строки SQL. Следовательно, я советую быть предупреждением об изменениях, которые могут повлиять на поведение метода.