tengo una situación muy básico:Android SQLite ORDER BY no funciona
Tengo una tabla con filas alrededor de 5k:
CREATE TABLE "words" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "name" TEXT NOT NULL , "def" TEXT NOT NULL, "rand" INTEGER)
Qué puedo actualizar periódicamente el uso de "palabras ACTUALIZACIÓN rand SET = aleatoria()"
En androide, cuando creo un cursor utilizando rawQuery() utilizando la siguiente:
SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC;
El cursor devuelto no itera en el orden correcto. P.ej. generará columnas con valores rand en el siguiente orden:
-1298882092
-2138143484
-1115732861
118839193
...
¿Alguien sabe qué está pasando aquí? ¿No debería funcionar esto? Si me quedo la misma consulta exacta en SQLiteManager devuelve los resultados en el orden correcto, por lo que este parece ser el androide/cursor específico.
ACTUALIZACIÓN:
Aquí está el código de Android, he intentado varias maneras:
Intento 1:
Cursor cursor = db.rawQuery("SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC", new String[]{});
Intento 2:
Cursor cursor = db.query("words", new String[]{"id", "name", "def", "rand"},
null, null, null, null, "rand ASC");
En ambos casos itero como la siguiente:
while(cursor.moveToNext()) {
...
Log.i("Test", cursor.getInt(3));
...
}
No en Android, pero parece que funciona aquí: http://ideone.com/GEnG3 –
Sí, funciona en sqlitemanager también, así que creo que es específico de Android. El caso real también tiene 5k filas y un índice en la columna rand. – ghempton
¿Puedes publicar el código de Android? –