Android App Dev db.query抛出错误源未找到

时间:2013-03-28 16:16:18

标签: android sqlite

我有这两行,其中第二行在eclipse ADT中调试时会出错:

String[] tableColumns = new String[] {"_id","name","fruitId","vegeId","totalHours"};
Cursor cursor = db.query("PickingPeriod", tableColumns,"isDeleted = 0", null, null, null, "name" );

当我从tableColumns中取出“totalHours”时,它可以正常工作。它似乎与totalHours有关,但它与fruitId和vegeId:INTEGER的类型相同。 查询可以返回超过4列吗?

当我改为使用rawquery时,一切正常:

Cursor cursor = db.rawQuery("SELECT * FROM PickingPeriod WHERE isDeleted = 0",null);

我阅读了一些建议,查询优先于 rawquery ,因此我希望查询正常工作。知道查询行有什么问题吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

问题出现在第3个参数"isDeleted = 0"中,尝试按如下方式更改代码:

Cursor cursor = db.query("PickingPeriod", tableColumns,"isDeleted = ? " , new String[] { String.valueOf(0) }, null, null, "name" );

您可以在Android Developer site.

上阅读有关查询方法的信息

答案 1 :(得分:0)

只是想在这里分享我的修复,这肯定是由表中缺少的列totalHours引起的。在相同的db版本1下创建数据库之后,它必须已添加到表中。我学会了通过将数据库版本更新为2来触发重新创建的数据库。当我重新加载枚举器时,使用列重新创建表totalHours,现在一切正常。谢谢所有人试图帮助。希望我的解决方案对其他初学者有所帮助。

然而,剩下的问题是,我不希望每次想要重新创建数据库时都被迫增加db版本号,尤其是在修复bug时。是否可以在不增加db版本的情况下修改数据库?