ghe*_*ton 7 sql sqlite android cursor
我有一个非常基本的情况:
我有一个大约5k行的表:
CREATE TABLE "words" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "name" TEXT NOT NULL , "def" TEXT NOT NULL, "rand" INTEGER)
Run Code Online (Sandbox Code Playgroud)
我使用"UPDATE words SET rand = random()"定期更新
在android中,当我使用rawQuery()使用以下代码创建游标时:
SELECT w.id, w.name, w.def, w.rand FROM words w ORDER BY w.rand ASC;
Run Code Online (Sandbox Code Playgroud)
返回的游标不按正确的顺序迭代.例如,它将按以下顺序输出具有rand值的列:
-1298882092
-2138143484
-1115732861
118839193
...
Run Code Online (Sandbox Code Playgroud)
有谁知道这里发生了什么?这不应该工作吗?如果我在SQLiteManager中运行完全相同的查询,它会以正确的顺序返回结果,所以这似乎是特定于android/cursor的.
更新:
这是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[]{});
Run Code Online (Sandbox Code Playgroud)
尝试2:
Cursor cursor = db.query("words", new String[]{"id", "name", "def", "rand"},
null, null, null, null, "rand ASC");
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我迭代如下:
while(cursor.moveToNext()) {
...
Log.i("Test", cursor.getInt(3));
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12768 次 |
| 最近记录: |