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"); 

有任何想法吗?

  • 如何更新SQLite数据库,而不是丢失所有现有的数据?
  • 为什么ContentValues有一个支持Boolean的put方法?
  • 如何获得联系人ID,电子邮件,电话号码在一个SQLite查询? 联系Android优化
  • 在Android ContentProvider中连接表和通知ContentObservers的最佳实践
  • 如何从SQLite android中的表中删除一行?
  • 是否有可能获得一个apk的sqlite数据库的只读访问?
  • 如何从Android中的SQLite中删除所有项目
  • Android:光标窗口已满
  • 看起来你有点混淆了。 根据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);