Sqlite数据库查询返回null

问题描述:

我有一个数据库和一个方法来从每个表中获取所有值。Sqlite数据库查询返回null

不过,我想只得到表行,其中路线= 5(例如)

这是我的查询:

Cursor cursor = db.query(TABLE_NAME_ROUTES, new String[] {"id","route","busstop","longitude","latitude"}, "route" + "=" + busroute , null, null, null, null); 

我已经尝试吨不同的版本WHERE子句但是似乎没有工作,因为返回列表的大小为0,当它应该是关于大小20

编辑:

一行改成了这样:

Cursor cursor = db.query(TABLE_NAME_ROUTES, new String[] {"id","route","busstop","longitude","latitude"}, "route" + "=`"+ busroute+"`" , null, null, null, null); 

日志从logcat的

05-02 18:14:23.396: E/SQLiteLog(15408): (1) no such column: 5 

05-02 18:14:23.396: D/AndroidRuntime(15408): Shutting down VM 
05-02 18:14:23.396: W/dalvikvm(15408): threadid=1: thread exiting with uncaught exception (group=0x40cee300) 
05-02 18:14:23.400: E/AndroidRuntime(15408): FATAL EXCEPTION: main 
05-02 18:14:23.400: E/AndroidRuntime(15408): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mso.master/com.mso.master.MainActivity}: android.database.sqlite.SQLiteException: no such column: 5 (code 1): , while compiling: SELECT id, route, busstop, longitude, latitude FROM routes WHERE route=`5` 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread.access$600(ActivityThread.java:142) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.os.Looper.loop(Looper.java:137) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread.main(ActivityThread.java:4931) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at java.lang.reflect.Method.invokeNative(Native Method) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at java.lang.reflect.Method.invoke(Method.java:511) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at dalvik.system.NativeStart.main(Native Method) 
05-02 18:14:23.400: E/AndroidRuntime(15408): Caused by: android.database.sqlite.SQLiteException: no such column: 5 (code 1): , while compiling: SELECT id, route, busstop, longitude, latitude FROM routes WHERE route=`5` 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at com.mso.master.DataManipulator.selectRoute(DataManipulator.java:167) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at com.mso.master.DBaccess.getBusRoute(DBaccess.java:43) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at com.mso.master.MainActivity.onCreate(MainActivity.java:130) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.Activity.performCreate(Activity.java:5008) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
05-02 18:14:23.400: E/AndroidRuntime(15408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139) 
05-02 18:14:23.400: E/AndroidRuntime(15408): ... 11 more 
+0

查询有去无回'null' ,而是它将返回空的光标 – Pragnani 2013-05-02 15:51:56

+0

你的数据库表中的路由类型是什么?是Text还是INTEGER? – Pragnani 2013-05-02 15:55:50

+0

类型的路线是TEXT – Maggie 2013-05-02 16:00:37

route类型是text,所以应该在single quotes在那里,试试这个

Cursor cursor = db.query(TABLE_NAME_ROUTES, new String[] {"id","route","busstop","longitude","latitude"}, "route" + "='"+ busroute+"'" , null, null, null, null); 
+0

它工作得更好我想! 但现在我收到一个错误,说:“05-02 18:07:21.111:E/SQLiteLog(15019):(1)没有这样的列:5 – Maggie 2013-05-02 16:08:05

+0

@Maggie Post在问题中完整的堆栈跟踪.. – Pragnani 2013-05-02 16:12:51

+0

我用另一个符号在回答中,而不是单引号在条件statemet中使用这个''route =“+”'“+ busroute +”'“' – Pragnani 2013-05-02 16:15:53