2016-10-13 5 views
0

Я использую SQLdelight для создания кода SQL, как иCreateQuery Useage неприятность о SQLBrite и SQLdelight

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

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

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

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

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

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

ответ

0

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

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

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

+0

Я знаю, что не так, но как я могу передать параметр? shop_id может быть «1», «11» или «1», «2», «3», «4», «Спасибо!». – paperhs

+0

, вы должны иметь правильное количество параметров в вашем тексте sqlite. 'SELECT * FROM CoachService ГДЕ shop_id в (?,?,?) И Brand_ID =?' будет работать с 'briteDatabase.createQuery (CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS, "1", "5", «11», «2»); Возможны переменные величины параметров привязки. Вам нужно будет создать запрос вручную в коде и добавить необходимое количество параметров. – Anstrong

Смежные вопросы