Android заключает в кавычки в строке запроса SQL

Существует три причины, почему Вы не должны использовать for..in для итерации по элементам массива:

  • for..in циклично выполнится по всем собственным и унаследованным свойствам объекта массива, которые не являются DontEnum; это означает, добавляет ли кто-то свойства к определенному объекту массива (существуют допустимые причины этого - я сделал так меня), или изменились Array.prototype (который считают плохой практикой в коде, который, как предполагается, работает хорошо с другими сценариями), эти свойства будут выполнены с помощью итераций также; унаследованные свойства могут быть исключены путем проверки hasOwnProperty(), но это не поможет, Вы с набором свойств в самом объекте массива

  • for..in, как гарантируют, не сохраните элемент, заказывая

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

44
задан Martin v. Löwis 18 August 2009 в 20:47
поделиться

2 ответа

Вам следует использовать параметр selectionArgs метода rawQuery :

p_query = "select * from mytable where name_field = ?";
mDb.rawQuery(p_query, new String[] { uvalue });

Это не только решает вашу проблему с кавычками, но и смягчает SQL-инъекцию .

129
ответ дан 26 November 2019 в 21:39
поделиться

DatabaseUtils.sqlEscapeString у меня работал правильно. Строка заключена в одинарные кавычки, а одинарные кавычки внутри строки становятся двойными кавычками. Пытался использовать selectionArgs в getContentResolver (). Query (), но это вообще не сработало.

14
ответ дан 26 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: