Android: ORDER BY en la consulta

Tengo una aplicación para Android que utiliza una base de datos sqlite local.

private SQLiteDatabase mDb; 

Cuando ejecuto esta consulta obtengo mi Cursor sobre filas con pid igual a id, como se desee:

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

Cuando ejecuto la siguiente consulta, con el objetivo de obtener ese mismo conjunto de resultados, ordenados por pid obtengo " android.database.sqlite.SQLiteException: datatype mismatch "

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

¿Algunas ideas?

Parece que tienes un poco confundido. De acuerdo con la documentación SQLiteDatabase.query , el último argumento es la cláusula LIMIT . La segunda a última es la cláusula ORDER BY .

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

EDITAR

Pero, también hay otro SQLiteDatabase.query donde ORDER BY sería el último

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

Esto funcionó para mí

 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 + "'" 

Puesto que Orderby es el segundo último parámetro en la consulta; Su consulta sería así

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

Si he entendido correctamente su problema, intente esto.

  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); 
  • Android cursorwindow error de memoria en un fragmento específico
  • Identificador único para SMS y contactos (para comprobar la duplicación) en Android
  • Pre-poblado Trie
  • Operador '! =' No se puede aplicar a los operandos de tipo 'Tarea' e 'int'
  • Se filtró un objeto SQLiteConnection para la base de datos. Por favor, corrija su aplicación
  • ¿Cómo puedo hacer un contexto de base de datos SQLite nulo en OnDestroy () en Android?
  • Excepción de puntero nulo de SQLite de SQLite
  • Error de SQLiteOpenHelper
  • SQLiteAssetHelper NullPointerException sólo en algunos dispositivos
  • Android sqlite CREATE TABLE SI NO EXISTE
  • Adaptador de cursor y ejemplo sqlite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.