android:ORDER BY在查询中

我有一个使用本地sqlite数据库的android应用程序。

private SQLiteDatabase mDb; 

当我运行这个查询时,我得到我的光标行与pid等于id,根据需要:

 mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, KEY_PID+" = "+id, null, null, null, null, null); 

当我运行以下查询,旨在获得相同的结果集,由pidsorting我得到“ android.database.sqlite.SQLiteException:数据types不匹配

 mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, KEY_PID+" = "+id, null, null, null, null, KEY_PID+" DESC"); 

有任何想法吗?

Solutions Collecting From Web of "android:ORDER BY在查询中"

看起来你有点混淆了。 根据SQLiteDatabase.query文档,最后一个参数是LIMIT子句。 倒数第二个是ORDER BY子句。

 Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, // <-- ORDER BY String limit) 

编辑

但是,还有另一个SQLiteDatabase.query ,其中ORDER BY将是最后一个

 Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 

这对我有效

 String filter = MySQLiteHelper.JOB_ID + "=" + Integer.toString(jobID); String orderBy = MySQLiteHelper.LOG_TIME + " DESC"; Cursor cursor = database.query(MySQLiteHelper.LOG_TABLE_NAME, logTableColumns, filter, null, null, null, orderBy); 
 KEY_PID + " = " + "'" + id + "'" 

由于Orderby是查询中倒数第二个参数, 你的查询会是这样的

 mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, KEY_PID+" = "+id, null, null, null, KEY_PID+" DESC", null); 

如果我正确理解你的问题,试试这个。

  String[] columns = new String[] {KEY_PID, KEY_TID}; String where = KEY_PID + " = " + Integer.toString(id); String orderBy = KEY_PID + " DESC"; Cursor cursor = mDb.query(PT_TABLE, columns, where, null, null, null, orderBy);