我有一个大约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-1115732861118839193...
有谁知道这里发生了什么?这不应该工作吗?如果我在sqliteManager中运行完全相同的查询,它会以正确的顺序返回结果,所以这似乎是特定于androID / cursor的.
更新:
这是androID中的代码,我尝试了多种方法:
尝试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)); ...}解决方法 我解决了它,是一个简单的疏忽. random()函数返回的值可以大于java int数据类型.这产生溢出.切换到getLong(),一切正常.光标一直在正确迭代. 总结
以上是内存溢出为你收集整理的Android SQLite ORDER BY不起作用全部内容,希望文章能够帮你解决Android SQLite ORDER BY不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)