【发布时间】:2011-11-18 04:52:29
【问题描述】:
我正在尝试从 SQLite 数据库中的表中检索字段。我已经使用 sqlite3 命令验证了数据是否在表中,并使用调试器针对我的“数据库”对象中引用的数据库运行从光标中得到的查询。
这是我的代码:
openForRead();
Cursor cursor = database.query(DATABASE_TABLE,
null, // All columns
null,
null,
null,
null,
"((" + latitude + " - " + KEY_LAT + ") * (" + latitude + " - " + KEY_LAT + ") + ( "
+ longitude + " - " + KEY_LONG + ") * ( " + longitude + " - "+ KEY_LONG + "))",
"10"
);
close();
此代码生成一个 SQL 查询,例如:
SELECT * FROM airport ORDER BY ((35.9314068 - latitude) * (35.9314068 - latitude) + ( -115.09285366 - longitude) * ( -115.09285366 - longitude)) LIMIT 10
我现在只有 5 个机场,所以我不会超过内存限制或类似的东西。
当我在 sqlite3 中运行该查询时,我会取回数据。
为什么我的光标总是空的?即使我将所有内容都设置为 null,它也是空的(应该只返回所有内容..)
【问题讨论】:
-
提供更多信息肯定会有所帮助,您能否粘贴您的代码的 sn-p 至少我们知道哪个部分是空的。你的意思是 cursor.size() == 0?或游标==空?等
-
这是我的观点:1)如果有错误,请分享错误日志。 2) 确认您的查询语句是可运行的/在 sqlite 本身中返回结果。您可以提取 .db 文件(根设备)并在 sqlite 浏览器中打开它。 3) 确保你的数据库中确实有数据,尝试从机场限制 10 中选择 * 并查看你的 cursor.size() 是否已更改。