Почему Android SQLiteDatabase использует массив String для ввода аргументов? - PullRequest
1 голос
/ 25 февраля 2020

если вы используете SQLite в Android, вы должны знать этот метод запроса:

Cursor query (String table, String[] columns, String selection, String[] selectionArgs, ...)

Эта часть заставила меня задуматься о ее дизайне: Android заставляет нас передавать аргументы запроса в виде массива String (String[] selectionArgs). Это может иметь некоторые недостатки:

  • Если вы хотите передать в качестве аргумента целое число, вы должны сначала преобразовать его в строку (yourInt + "" или String.valueOf(yourInt)), это создает много временных строк объекты.
  • Если вам нужно использовать только 1 аргумент, вы должны создать массив только с 1 элементом.

Намного проще, если входной аргумент Object... selectionArgs, что Вы можете передать целочисленное значение или использовать одну строку без создания массива .

Я не знаю, почему Android создатели сделали это? Может быть потому, что String неизменен, тогда защитит вас от SQL Injection?

...