2014-11-23 2 views
0
// My getBus Function 
Cursor getBus(String source, String dest) 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cur=db.rawQuery("SELECT b.BusName FROM BusTable b, (SELECT Route , RBusName FROM RouteBusTable WHERE Route IN ("+source+")) b1, (SELECT Route , RBusName FROM RouteBusTable WHERE Route IN ("+dest+")) c WHERE b.BusName IN (b1.RBusName) AND b.BusName IN (c.RBusName)", new String [] {}); 

    return cur; 
} 

// Retreiving it like this 
Cursor a = dbHelper.getBus("1", "12"); 

    a.moveToFirst(); 
    while (!a.isAfterLast()) 
    { 
     String Name = a.getString(0); 
     Toast.makeText(AddEmployee.this, "Stops Are "+ Name , Toast.LENGTH_LONG).show(); 
     a.moveToNext(); 
    } 

Он останавливает приложение. Что я там делаю неправильно? Есть ли ошибка в подзапросе или извлечении?Подзапрос в android sqlite, не работает

+0

1. Почтовая трассировка. 2. Попробуйте поставить апострофы вокруг ваших строк, например. 'IN ('" + source + "')) b1' – Ricky

ответ

1

Прежде всего попытаться процитировать source и dest на 'символ, как это:

"... WHERE Route IN (\'"+source+"\') ..." 

Если проблема здесь, то вы должны думать, как избежать этого с несколькими значениями в source и dest. В вашем конкретном случае, вы должны правильно как source = "\'1\', \'2\'" формировать его или использовать рекомендацию от here


P.S. Если это не сработает, сообщите сообщение об ошибке logcat и итоговый запрос (во время выполнения)

+1

Спасибо, хороший ответ! –

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