IllegalArgumentException: недопустимый столбец NULL в безопасности пути Январь 2020 - PullRequest
0 голосов
/ 19 февраля 2020

Я сталкивался со следующим кодом, использовавшим мою проекцию в запросе SQLiteQueryBuilder.

String[] selectFields = new String[5];
selectFields[0] = "pmp_id";

В версиях пути безопасности от Android до 01.01.2020 (дд / мм / гггг) этот код работает правильно. В версии пути 01.01.2020 приложение генерирует ошибку:

java.lang.IllegalArgumentException: Invalid column null
    at android.database.sqlite.SQLiteQueryBuilder.computeSingleProjectionOrThrow(SQLiteQueryBuilder.java:1142)
    at android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:1113)
    at android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:888)
    at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:561)
    at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:475)

Я уже исправил ошибку следующим образом:

String[] selectFields = { "pmp_id" };

Но я хотел бы понять, почему в в старых версиях это работает, а в новых - нет?

1 Ответ

0 голосов
/ 19 февраля 2020

new String[5] создает массив из пяти String ссылок, и вы назначаете только первый слот. Оставшиеся слоты остаются нулевыми.

Почему этот сбой начался после недавнего обновления, кажется, объяснено в этом коммите , который меняет SQLiteQueryBuilder на более строгие с его входами:

Это изменение также предлагает setStrictColumns () требовать, чтобы все недоверенные имена столбцов были действительными, например, в ContentValues.

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