2011-11-18 45 views
0

我想从SQLite数据库中的表中检索字段。我通过使用sqlite3命令验证了数据在表中,并使用调试器针对在“数据库”对象内引用的数据库运行查询,该查询是使用Cursor获得的。SQLite光标永远不会有字段

这里是我的代码:

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中运行该查询时,我得到了数据。

为什么我的光标总是空的?它是空的,即使我把一切都为空(这应该只是返回的一切..)

+0

给予更多的信息肯定会有帮助,你可以粘贴你的代码片段,至少我们知道哪一部分是空的。你的意思是cursor.size()== 0?或者cursor == null?等等 – Jianhong

+0

光标大小为0. –

+0

这里是我的看法: 1)如果有错误,请分享错误日志。 2)确认你的查询语句是可运行的/返回结果在sqlite本身。你可以提取.db文件(根设备)并在sqlite浏览器中打开它。 3)确保你真的在数据库中有数据,尝试从机场限制10中选择*,看看你的cursor.size()是否已经改变。 – Jianhong

回答

0

我在读数据之前关闭数据库连接的光标。显然你不能那样做。现在我明白了!

0

确保列名u的给予是正确的......

+0

如果列名称不正确,那么使用调试器从光标复制的SQL运行正确吗? –