Cursor.getCount()为负(= -1)

时间:2010-11-07 12:16:20

标签: android sqlite

我尝试从表中加载值列表,但游标返回的长度为-1?

是否有可能在Android模拟器上查看sqlite数据库?

错误的代码:

final Cursor c = db.query(
    ACCESS_TOKEN_TABLE,
    new String[] { ACCESS_TOKEN_COL_ID, ACCESS_TOKEN_COL_VALUE },
    ACCESS_TOKEN_COL_SERVER_ID + "=" + serverId,
    null,
    null,
    null,
    null);

public static final String COL_ID = "_id";
public static final String ACCESS_TOKEN_TABLE = "accesstoken";
public static final String ACCESS_TOKEN_COL_ID = COL_ID;
public static final String ACCESS_TOKEN_COL_SERVER_ID = "server_id";
public static final String ACCESS_TOKEN_COL_VALUE = "value";

数据库中有一个条目。 ServerID的值为1,并且存在一个条目,其中ServerID为1.

此致 xZise

PS:只有两个问题才能打开数据库。

4 个答案:

答案 0 :(得分:3)

如果你使用CLI接口“adb -e shell”,你有一个sqlite3命令。 更好 - 我知道一个可以使用ddms查看sqlite数据库内容的eclipse插件。但我个人最喜欢的是将db文件从模拟器中拉出来,并使用sqlite数据库浏览器查看内容。

答案 1 :(得分:2)

getCount()= -1 - >无数......(你确定你的查询没问题吗?)

不知道如何使用Android模拟器查看sqlite数据库,但您可以使用Root Explorer等应用程序查看数据库。

答案 2 :(得分:0)

如果游标为-1,则SQL语句不返回任何结果。也许你是要添加用于SQL select语句的代码。

至于第二个,查看数据库 - 是的,这是可能的:

  1. 在Eclipse,DDMS视图中,单击Devices选项卡中的模拟器名称(如果未显示Devices选项卡:Window-> Show View-> Devices)

  2. 然后单击文件资源管理器选项卡(如果选项卡未显示:Window-> Show View-> File Explorer)

  3. 现在浏览文件树。你需要去: 数据/数据/ com.package.name /数据库

  4. 现在单击要检查的数据库的名称。您需要将其复制到您的计算机上。 (为此,请单击带有箭头的软盘图片。将其保存在您可以找到的位置。)

  5. 您需要一个SQLite浏览器,例如SQLite Manager add-on for Firefox

  6. 在Firefox中,打开SQLite Manager (工具 - > SQLite Manager)

  7. 在SQLite Manager中,单击数据库,连接数据库(您可能必须将文件类型从 SQLite DB文件(.sqlite;)更改为所有文件< / strong>因为Android DB不必在文件上加上.sqlite扩展名

  8. 另一种选择是使用Questiod SQLite Browser插件进行日食 - 我刚刚添加了这个 - 让上面的过程变得容易两倍!

答案 3 :(得分:0)

Ahr ....我有两条线到高点: 所以问题不在于游标返回负长度,问题是它不能给我列的索引。

我很抱歉。由于另一个问题,我发布了一个新问题: Cursor doesn't find columns?

此致 xZise