我有一个非常基本情况:的Android SQLite的ORDER BY不起作用
我有一个表5K左右行:
CREATE TABLE "words" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "name" TEXT NOT NULL , "def" TEXT NOT NULL, "rand" INTEGER)
其中我使用“更新字数设置兰特=随机定期更新()”
在机器人,当我创建使用利用rawQuery()的光标以下:
SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC;
返回的游标不会以正确的顺序迭代。例如。它将以下列顺序兰特值输出列:
-1298882092
-2138143484
-1115732861
118839193
...
有谁知道怎么回事吗?不应该这样工作吗?如果我在SQLiteManager中运行完全相同的查询,它会以正确的顺序返回结果,所以这似乎是特定于android/cursor的。
UPDATE:
这里采用的是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));
...
}
不是Android,但它似乎在这里工作:http://ideone.com/GEnG3 – 2011-01-30 20:22:18
是的,它也适用于sqlitemanager,所以我认为它是特定于android的。实际案例也有5k行和rand列上的索引。 – ghempton 2011-01-30 20:23:43