У меня очень простая ситуация:
У меня есть таблица с 5k строками:
CREATE TABLE "words" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "name" TEXT NOT NULL , "def" TEXT NOT NULL, "rand" INTEGER)
, которую я периодически обновляю, используя "UPDATE words SET rand = random ()"
В Android, когда я создаю курсор, используя rawQuery (), используя следующее:
SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC;
Возвращенный курсор не повторяется в правильном порядке.Например, он будет выводить столбцы со значениями rand в следующем порядке:
-1298882092
-2138143484
-1115732861
118839193
...
Кто-нибудь знает, что здесь происходит?Разве это не должно работать?Если я выполняю точно такой же запрос в SQLiteManager, он возвращает результаты в правильном порядке, так что, похоже, это зависит от Android / курсора.
ОБНОВЛЕНИЕ:
Вот код в Android, япробовал несколько способов:
Попытка 1:
Cursor cursor = db.rawQuery("SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC", new String[]{});
Попытка 2:
Cursor cursor = db.query("words", new String[]{"id", "name", "def", "rand"},
null, null, null, null, "rand ASC");
В обоих случаях я повторяю, как показано ниже:
while(cursor.moveToNext()) {
...
Log.i("Test", cursor.getInt(3));
...
}