我有这两行,其中第二行在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 ,因此我希望查询正常工作。知道查询行有什么问题吗?
提前致谢
答案 0 :(得分:0)
问题出现在第3个参数"isDeleted = 0"
中,尝试按如下方式更改代码:
Cursor cursor = db.query("PickingPeriod", tableColumns,"isDeleted = ? " , new String[] { String.valueOf(0) }, null, null, "name" );
答案 1 :(得分:0)
只是想在这里分享我的修复,这肯定是由表中缺少的列totalHours引起的。在相同的db版本1下创建数据库之后,它必须已添加到表中。我学会了通过将数据库版本更新为2来触发重新创建的数据库。当我重新加载枚举器时,使用列重新创建表totalHours,现在一切正常。谢谢所有人试图帮助。希望我的解决方案对其他初学者有所帮助。
然而,剩下的问题是,我不希望每次想要重新创建数据库时都被迫增加db版本号,尤其是在修复bug时。是否可以在不增加db版本的情况下修改数据库?