Проблемы с использованием createQuery в SQLBrite и SQLdelight

Я использую SQLdelight для создания кода SQL, как

SELECT * FROM CoachService WHERE shop_id in (?) and brand_id = ?

и я запрашиваю, как:

briteDatabase.createQuery(CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS,  "'1','5','11'","2");

но результат пуст. Затем я изменяю sql code как

SELECT * FROM CoachService WHERE shop_id in ('1','5','11') and brand_id = ?

это возвращает мне 3 результата. Зачем?

1 ответ

Когда вы передаете параметр запроса, он превращается в строку с помощью привязки Android. Поэтому, когда вы проходите в "'1','5','11'","2" это проявляется в запросе как

SELECT * FROM CoachService WHERE shop_id in (''1','5','11'') and brand_id = ?

или что-то вроде этого, где "1", "5", "11" на самом деле одна целая строка.

Другие вопросы по тегам