我有一个非常基本的情况:
我有一个大约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 / cursor的.
更新:
尝试1:
Cursor cursor = db.rawQuery("SELECT w.id,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,"rand ASC");
在这两种情况下,我迭代如下:
while(cursor.moveToNext()) { ... Log.i("Test",cursor.getInt(3)); ... }