2014-11-23 89 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 2014-11-23 14:20:08

回答

1

首先尝试通过“符号引用sourcedest这样的:

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

如果问题是在这里,那么你应该考虑如何与多个值避免这种情况在sourcedest。 在您的特定情况下,你应该正确喜欢source = "\'1\', \'2\'"形成,或使用建议从here


附:如果它不起作用,请提供logcat错误信息和生成的查询(在运行时)

+1

Thanks Man,A Answer Answer! – 2014-11-23 17:58:18