Основные функции Android SQLite - PullRequest
1 голос
/ 21 октября 2011

Согласно документации для Android он имеет полную поддержку sqlite. Означает ли это, что я могу использовать основные функции как часть projection для запроса, например:

final ContentResolver cr = getContentResolver();    
final String [] projection = new String []{
    ...,
    ...,
    "replace(...) as replacedCol"
};

Cursor c = cr.query(uri, projection, null, null, null);

Этот фрагмент кода генерирует IllegalArgumentException ( Неверный столбец заменяет (...)). Так есть ли способ использовать основные функции в SQL-запросах?

edit ошибка, вероятно, вызвана ContentProvider, который проверяет наличие разрешенных столбцов, поэтому кажется, что использование функций с решателем содержимого невозможно.

1 Ответ

1 голос
/ 21 октября 2011

проекция в запросе провайдера <> столбцы в SQL-запросе

обычно ContentProvider содержит

static final HashMap<String, String> map = new HashMap<String, String>();
static {
  map.put("NameInProjection", "RealDBColumn AS NameInProjection");
  map.put("replacedCol", "replace(...) as replacedCol");
}

, а в методе запроса ContentProvider мы используем его как

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
  SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
  builder.setTables(table);
  builder.setProjectionMap(map);
  return builder.query(mDB.getReadableDatabase(), projection, selection, selectionArgs, null, null, sortOrder);
}

поэтому SQLiteQueryBuilder переводит проекцию в реальный запрос, используя карту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...