rawQuery () форматирование - PullRequest
0 голосов
/ 21 мая 2018

Я новичок в Android и SQLite.Этот запрос выглядит правильно?Он работает, когда я делаю запрос в менеджере баз данных без переменных, и работал, пока я не добавил вторую переменную в конце.

Cursor cursor = database.rawQuery("SELECT car FROM cars WHERE color = " + color + " AND equipment = " + equipment + ";", null);

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Чтобы упростить форматирование и избежать атак внедрения SQL, вы должны использовать параметры для строковых значений:

database.rawQuery("SELECT car FROM cars WHERE color = ? AND equipment = ?",
                  new String[]{ color, equipment });
0 голосов
/ 21 мая 2018

Вам не хватает одинарных кавычек.Попробуйте этот запрос, если он работает.

Cursor cursor = database.rawQuery("SELECT car FROM cars WHERE color = " + DatabaseUtils.sqlEscapeString(String.valueOf(color)) + " AND equipment = " + DatabaseUtils.sqlEscapeString(String.valueOf(equipment)), null);
...