Android SQLite ORDER BY不起作用

Android SQLite ORDER BY不起作用,第1张

概述我有一个非常基本的情况: 我有一个大约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()”定期更 我有一个非常基本的情况:

我有一个大约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不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存