desc - android: ORDER BY en consulta
sqlite order by (5)
Dado 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);
Tengo una aplicación para Android que usa una base de datos sqlite local.
private SQLiteDatabase mDb;
cuando ejecuto esta consulta, obtengo mi Cursor sobre las filas con pid igual a id, según lo deseado:
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 el mismo conjunto de resultados, ordenado 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?
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);
Parece que te has confundido un poco. De acuerdo con la documentación SQLiteDatabase.query
, el último argumento es la cláusula LIMIT
. La penú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 otra SQLiteDatabase.query
donde ORDER BY
sería la última
Cursor query (String table,
String[] columns,
String selection,
String[] selectionArgs,
String groupBy,
String having,
String orderBy)
Si entendí correctamente tu problema, prueba 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);
KEY_PID + " = " + "''" + id + "''"