2013-11-22 3 views
0

Я использую следующий запрос, чтобы получить список пунктаAndroid Sqlite подзапрос не возвращает никакого значения

Query="Select * from Item_List where idSubcategory = (Select _id from SubCategory_List where Name = ?)"; 
c = db.rawQuery(Query, new String[] { Search }); 

Но он не возвращается никакого результата.

Я запустил этот запрос в базе данных, которую я вытащил с устройства, а также с эмулятора. Там я получаю правильный результат, но когда я запускаю его на устройстве, данные не возвращаются.

+0

Вы использовали отладчик, чтобы проверить, что «Search» содержит значение, которое вы думаете, что делает? В противном случае я попытался бы включить фактическое значение «Поиск» в строке запроса вместо «? чтобы узнать, не имеет значения. – NigelK

+0

@Dhiraj Tayade Вы решили свою проблему? – JJ86

ответ

-1

Можете ли вы попробовать по-другому? Используйте execSQL(), как описано в этом link. Это точно такая же проблема.

EDIT

К сожалению, я не заметил, что ExecSQL() не возвращает данных (рабочий день заканчивается, наконец-то!). Единственное решение, которое у меня есть, - это сделать первый запрос, и результат этого будет параметром второго запроса.

EDIT 2

Попробуйте добавить «IN» на ваш запрос, как это:

Query = "Select * from Item_List where idSubcategory in (Select _id from SubCategory_List where Name = ?)" 
+0

У меня на самом деле сложный запрос. 'Выбрать * из Item_List где _id IN ( \t \t выбрать idItem из TopItem_List где IdCustomer = ( \t \t \t выберите _id из Cust_List где Name = '?' \t \t) \t)' –

+0

@DhirajTayade, поэтому я думаю, что это не работает; добавьте свой «поиск» в запрос String, а затем используйте .execSQL(). – JJ86

+0

'execSql' не может вернуть данные. –

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