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?

5 Solutions collect form web for “Android: ORDER BY en la consulta”

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); 
  • ¿Está bien tener una instancia de SQLiteOpenHelper compartida por todas las actividades en una aplicación de Android?
  • Cómo insertar a granel en sqlite en android
  • Cómo obtener el registro de llamadas desde fecha específica en android
  • ¿Qué hará un SQLiteCursor si una columna es nula?
  • ListView Casilla de verificación Guardar estado
  • ¿Cómo obtener el último registro de Sqlite?
  • Clave Extranjera de SQLite
  • Aumentar el valor de un registro en la base de datos android / sqlite
  • La restricción de Android Room FOREIGN KEY falló
  • Acceso directo android, acceso db lanzador
  • Rendimiento de Android ContentProvider
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.