IllegalArgumentException:2020 年 1 月安全路径中的无效列 null
IllegalArgumentException: Invalid column null in Path of Security January of 2020
我发现以下代码是如何使用我的投影查询 SQLiteQueryBuilder 的。
String[] selectFields = new String[5];
selectFields[0] = "pmp_id";
在 Android 的安全路径版本中,直到 01/01/2020 (dd/MM/yyyy) 此代码可以正常工作。在 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" };
但我想了解为什么在旧版本中它有效而在新版本中却无效?
new String[5]
创建一个包含五个 String
引用的数组,您只分配给第一个插槽。剩余的插槽保持为空。
为什么这在最近的更新后开始崩溃似乎在 this commit 中有所解释,它更改了 SQLiteQueryBuilder
以使其输入更严格:
This change also offers setStrictColumns() to require that all
untrusted column names are valid, such as those in ContentValues.
我发现以下代码是如何使用我的投影查询 SQLiteQueryBuilder 的。
String[] selectFields = new String[5];
selectFields[0] = "pmp_id";
在 Android 的安全路径版本中,直到 01/01/2020 (dd/MM/yyyy) 此代码可以正常工作。在 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" };
但我想了解为什么在旧版本中它有效而在新版本中却无效?
new String[5]
创建一个包含五个 String
引用的数组,您只分配给第一个插槽。剩余的插槽保持为空。
为什么这在最近的更新后开始崩溃似乎在 this commit 中有所解释,它更改了 SQLiteQueryBuilder
以使其输入更严格:
This change also offers setStrictColumns() to require that all untrusted column names are valid, such as those in ContentValues.